以下为Redis链表中一个节点的结构
typedef struct listNode {
// 前置节点
struct listNode *prev;
// 后置节点
struct listNode *next;
// 节点的值
void *value;
} listNode;
可以看见此结构与我们常见的双向链表结构类似。由前去后继节点的地址以及当前节点的值组成。
redis中链表的表示结构为:
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;
redis这样实现也是为了更好的操作使用链表。