redis 基本数据类型-列表(List)

栏目: 数据库 · 发布时间: 6年前

内容简介:今天不瘦给大家分享一下redis第二个基本数据类型:列表。如果大家了解基本数据结构,相信大家对列表不会陌生,比如在C语言中我们可以使用数组实现一个列表,也可以使用链表实现一个列表(列表链表傻傻分不清楚,列表是一种抽象数据类型,链表为一种实现方式)。言归正传,那redis是怎么实现列表的呢?答案是:

今天不瘦给大家分享一下 redis 第二个基本数据类型:列表。如果大家了解基本数据结构,相信大家对列表不会陌生,比如在 C语言 中我们可以使用数组实现一个列表,也可以使用链表实现一个列表(列表链表傻傻分不清楚,列表是一种抽象数据类型,链表为一种实现方式)。

言归正传,那redis是怎么实现列表的呢?答案是: 双端双向无环链表 (原谅我给起了一个这么复杂的名字,也有人直接叫双端链表) 借用《redis设计与实现》中一图

redis 基本数据类型-列表(List)

为什么这样设计呢?主要有如下优点:

  • 双向:获取前置节点和后置节点的时间复杂度都为O(1)
  • 首尾两个指针:从头和尾取元素时间复杂度都为O(1),从redis同时提供列表两端的操作命令也得到了印证(lpop和rpop等)
  • 无环: 有环链表会导致某些操作变复杂,且应用场景有局限性
  • 长度计数器:使获取列表长度的时间复杂度为O(1),又是以空间换时间思想的体现

注意事项:

一个列表最多可以包含 2 32 - 1 个元素

redis列表定义为字符换列表,但是基于的双端双向循环列表并没有限定每个节点value的类型

参考:

《Redis设计与实现》

https://redis.io/topics/data-types

这里是老瘦家的儿子,如需转载请声明,我替老瘦感谢你。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTTP/2基础教程

HTTP/2基础教程

Stephen Ludin、Javier Garza / 罗正龙、郑维智 / 人民邮电出版社 / 2018-1 / 49.00元

让网站和应用更快速、更简洁、更稳健,从而有效提升用户体验,这无疑是众多开发者梦寐以求的。然而互联网发展日新月异,HTTP/1.1协议已经难以满足现今的需求。在众多Web性能提升方案中,HTTP/2值得尝试。 本书是HTTP/2实用指南,介绍了HTTP/2的设计初衷和新特性,以及如何才能充分利用这些特性来打造高性能网站及应用。作者用定量分析方法,对比了不同网络环境下及不同浏览器上HTTP/1.......一起来看看 《HTTP/2基础教程》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具