Redis 第二讲 LIST 类型
LIST 实现原理基于数据结构中的双向链表
adlist.h/list 链表主体结构
typedef struct list {
listNode *head; //表头节点
listNode *tail; //链表尾部节点
unsigned long len; //链表节点数量
void *(*dup) (void *ptr); //节点值赋值函数
void *(*free) (void *ptr); //节点值释放函数
int (*match) (void *ptr, void *key); //节点值对比函数
}
adlist.h/listNode 链表每个节点的结构
typedef stuct listNode {
struct listNode *prev; //前面节点
struct listNode *next; //后面的节点
void * value; //当前节点的值
}
无环链表,头上一个元素,尾下一个元素指向NULL。
找头找尾 ,找前找后,查长度 复杂度都是O1。
重点 :REDIS链表dup,fee , match 可以保存不通类型的值????这个没有特别好的理解。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: