定义

实现很基础,无环双向链表和保存全局的表头;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
typedef struct listNode {       //  节点
struct listNode *prev;
struct listNode *next;
void *value;
} listNode;

typedef struct listIter {
listNode *next;
int direction;
} listIter;

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;

更多源码注释说明见adlist.hhttps://github.com/dalaizhao/redis/tree/feature_code_comment