标签:cti 时间 iter tar pre 结构 记录 idt rect
redis链表的实现是双向链表.
每个链表节点的结构如下:
typedef struct listNode { //前置节点 struct listNode *prev; //后置节点 struct listNode *next; void *value; } listNode;
表头结构
typedef struct list { //表示表头 listNode *head; //表示表尾 listNode *tail; //节点复制函数 void *(*dup)(void *ptr); //节点释放函数 void (*free)(void *ptr); //节点值对比函数 int (*match)(void *ptr, void *key); //记录链表长度 unsigned long len; } list;
结构里面包含了迭代器,迭代器的结构
//迭代器 typedef struct listIter { listNode *next; int direction; //表明迭代方向 } listIter; #define AL_START_HEAD 0 //正向迭代器 #define AL_START_TAIL 1 //反向迭代器
将表头和节点结合起来,结构如图
adlist.c里定义了一些简单的对链表的操作,函数中如查找key,copy链表都是通过迭代器进行操作。
redis的链表实现特性:
链表被广泛用于实现Redis的各种功能,比如链表键、发布与订阅、慢查询、监视器等。
标签:cti 时间 iter tar pre 结构 记录 idt rect
原文地址:https://www.cnblogs.com/chenyang920/p/13127287.html