Redis的列表(List)底层实现之一由链表实现,当一个列表包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis使用链表做为列表的底层实现。函数
除了列表外,发布订阅、慢查询、监视器等功能都用到了链表。code
链表Node结构源代码,adlist.h/listNode:字符串
typedef struct listNode { //前置节点 struct listNode *prev; //后置节点 struct listNode *next; //节点值 void *value; } listNode;
adlist.h/list源代码:class
typedef struct list { //表头节点 listNode *head; //表尾节点 listNode *tail; //长度 unsigned long len; //节点复制函数 void *(*dup) (void *ptr); //节点释放函数 void *(*free) (void *ptr); //节点值对比函数 int (*match) (void *ptr, void *key); } list;