redis命令手册
第三章 链表
- 拥有高效的节点重排能力
- 顺序性的节点访问方式
- 灵活调整链表长度
- redis构建了自己的链表实现
- redis中列表键的底层实现之一就是链表
- 发布与订阅、慢查询、监视器等功能也用到了链表
- redis服务器本身还使用链表来保存多个客户端的状态信息
- 已经使用链表来构建客户端输出缓冲区
链表和链表节点的实现
-
adlist.h/listNode 结构表示
typedef stuct listNode{ //前置节点 struct listNode *prev; //后置节点 struct listNode *next; //节点的值 void *value; }listNode;
-
使用adlist.h/list 来持有链表(管理用) 操作更方便
typedef struct list{ //表头节点 //表尾节点 //链表所包含的节点数量 //节点值复制函数 //节点值释放函数 //节点值对比函数 是否相等 }list;
-
redis的链表实现的特性可以总结如下:
- 双端
- 无环
- 带表头指针和表尾指针
- 带链表长度计数器
- 多态
重点回顾
- redis中链表的应用
- redis中链表节点listNode的结构
- redis中链表list结构
- 无环链表
- 链表相关函数