Redis链表包含二个结构体
//链表节点 双端
struct listNode{
struct listNode *prev;
struct listNode *next;
void *value;
}
//使用list结构来操作链表,获取链表的一些属性,无需遍历链表
struct list{
//链表头结点
listNode *head;
//链表尾节点
listNode *tail;
//链表包含节点的数量
unsigned long len;
//节点值复制函数
void *(*dup)(void *ptr);
//节点值释放函数
void (*free)(void *ptr);
//节点值对比函数
int (*match)(void *ptr,void *key);
}
Redis的链表实现具有如下特性
- 双端
- 无环
- 带表头和表尾指针
- 带链表长度计数器
- 多态