2019独角兽企业重金招聘Python工程师标准>>>

链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度。redis提供五种数据结构:String、hash、list、set、sorted set。这五大数据类型底层有不同的实现方式,给我们在数据结构类型的选择上更方便。底层数据结构的实现主要分为以下几块:链表、字典、跳跃表、整数集合、压缩列表、对象。首先来分析一下链表。

(1)listNode节点

在adlist.h结构来表示链表节点,如下图所示,

listNode通过prev和next指针组成双端链表:,如下图所示:

(2)list节点

虽然仅仅使用多个listNode结构就可以组成链表,但使用adlist.h/list来持有链表的话,操作起来更方便,如下图所示:

list结构为链表提供了表头指针、表尾指针、链表长度计数器、而dup用于复制链表节点所保存的数、 free用于释放链表节点所保存的值、match用于比较链表节点所保存的值和另一个输入值是否相等。

list节点和listNode节点的关系可以用下图来表示;

(3)总结

redis链表实现的特性总结如下:

(i)双端:获取某个节点的前置节点和后置节点的复杂度都是O(1)。

(ii)无环。

(iii)带表头指针和表尾指针

(iv)带链表长度计数器

(v)多态。

(4)用途

链表广泛应用于实现redis的各种功能,比如列表键、发布和订阅、慢查询、监视器等。

转载于:https://my.oschina.net/oneFaith/blog/774835

redis数据结构之一:链表相关推荐

  1. redis——数据结构(字典、链表、字符串)

    1 字符串 redis并未使用传统的c语言字符串表示,它自己构建了一种简单的动态字符串抽象类型. 在redis里,c语言字符串只会作为字符串字面量出现,用在无需修改的地方. 当需要一个可以被修改的字符 ...

  2. Redis 数据结构-字典源码分析

    2019独角兽企业重金招聘Python工程师标准>>> 相关文章 Redis 初探-安装与使用 Redis 数据结构-字符串源码分析 本文将从以下几个方面介绍 前言 字典结构图 字典 ...

  3. 为了拿捏 Redis 数据结构,我画了 40 张图

    Redis 为什么那么快? 除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis 能高效的处理. 因此,这次我们就来好 ...

  4. 【带你重拾Redis】Redis数据结构及使用场景

    Redis数据结构 Redis有着非常丰富的数据结构,这些数据结构可以满足非常多的应用场景, 如果对这些数据结构有一个比较清晰的认知,使用Redis也会更加得心应手. Redis主要支持以下数据结构: ...

  5. 深入剖析Redis系列(七) - Redis数据结构之列表

    前言 列表(list)类型是用来存储多个 有序 的 字符串.在 Redis 中,可以对列表的 两端 进行 插入(push)和 弹出(pop)操作,还可以获取 指定范围 的 元素列表.获取 指定索引下标 ...

  6. redis 数据结构

    2019独角兽企业重金招聘Python工程师标准>>> redis对象 redis 数据结构 字符串对象  SDS(简单动态字符串) 列表对象  压缩列表(ziplist) 或 链表 ...

  7. Redis 数据结构与内存管理策略(上)

    Redis 数据结构与内存管理策略(上) 标签: Redis Redis数据结构 Redis内存管理策略 Redis数据类型 Redis类型映射 Redis 数据类型特点与使用场景 String.Li ...

  8. redis value多大会影响性能_选择合适Redis数据结构,减少80%的内存占用

    前言 redis作为目前最流行的nosql缓存数据库,凭借其优异的性能.丰富的数据结构已成为大部分场景下首选的缓存工具. 由于redis是一个纯内存的数据库,在存放大量数据时,内存的占用将会非常可观. ...

  9. Redis数据结构以及对应存储策略

    redis数据结构: String 可以是字符串也可以是数字,以及浮点数 List,一个链表,链表上每一个节点都包含一个字符串 set 包含字符串的无序手机其,特点是每一个字符都是唯一的 hash,包 ...

  10. 你需要知道的那些 redis 数据结构(前篇)

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 饿了么物流技术团队 来源 | CSDN 企业博客 redis 对于团队中的同学们来说是非常熟悉的存在了,我们常用它来做缓存.或是实现 ...

最新文章

  1. linux Mysql 安装
  2. 记录在Spring-Boot中使用Fegin调用RESTfull的PATCH方法设置
  3. Android -- TextView与EditText 同步显示
  4. unity值得推荐的网址
  5. UA MATH571B 试验设计V 析因设计简介
  6. 信息系统项目管理师:第8章:项目质量管理(2)-章节重点
  7. NOCOUNT如何影响ADO.NET(SET NOCOUNT ON的性能问题)
  8. 解决链接模型的可见性问题
  9. html背景图片横屏,CSS背景颜色 背景图片 居中 重复 固定样式background经验篇
  10. Oracle常用的日期函数
  11. 安卓学习笔记23:常用控件 - 网格视图与图像切换器
  12. MATLAB生成正弦波
  13. java volatile详解,互联网 面试官 如何面试
  14. 下三角矩阵的逆矩阵_上三角或下三角矩阵的逆矩阵能否简便方法求出??只有主副对角线不为0的矩阵能否直接写出逆矩阵。...
  15. 微软 Exchange Autodiscover 协议存bug,数十万域凭据可遭泄露
  16. Python对图像进行二维Gabor滤波加速
  17. JAVA基础(3/17)-基本语法_运算符
  18. java如何将字符串转化为日期_java如何将字符串转为日期
  19. SE96X、CM500-I27条码扫描引擎使用经验
  20. lisp 圆柱螺旋线_AutoCAD.Lisp等距3D螺旋线

热门文章

  1. 中消协发布2018年春节消费提示
  2. 【Shell脚本】逐行处理文本文件
  3. win7 创建FTP站点
  4. Windows Phone 7 cs页面添加样式
  5. 类: property
  6. hexo使用jenkins自动部署到阿里云
  7. 如何让低版本IE浏览器支持HTML5和CSS3
  8. 口令即漏洞 放弃它吧
  9. 前序遍历与中序遍历确定后序遍历
  10. 对 android apk 进行重新签名操作