Redis Doubly Linked List
Based on Redis 7.0.11.
Doubly linked list 定义
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;value: 链表节点使用void *保存值,结合dup、free和match实现了对多态支持。dup: 拷贝value用,如果没有设置则默认浅拷贝。free: 回收value用,如果没有设置就不对value进行额外回收处理。match: 比较value和key是否相等,未设置则直接比较指针。
list 只提供双端链表的功能,具体节点值及对应的行为完全由使用方负责。