《Redis - 基础数据结构 - 双向链表》
一:概述
- Redis 源码版本为3.0.0.
- 链表(list)是Redis中最基本的数据结构, 列表/发布订阅/慢查询/监控器 等都是用使用链表。
二:链表的定义
- 链表节点使用(src/adlist.h)表示
-
- 多个节点可以组成双端链表
-
- 虽然使用 listNode 结构就可以组成链表,但是使用 (src/adlist.h) 来组织节点数据,操作会更方便。
-
- 使用 list 组织链表
-
三:链表特性
- 双端:链表节点都有 next / prev,获取相连节点为O(1)。
- 无环:链表的访问 终点为 null.
- 表头和表尾指针:通过 List 结构,O(1) 获取表头和表尾指针。
- 链表长度计算:List 节点 Len 获取链表长度。
- 多态 :链表使用 *void 保存值,通过 List 的 dup/free/mastch 三个属性节点设置特定的函数。所以链表可以保存各种不同的值。