关键代码位置:src/adlist.h
列表作为一种常用的数据结构,Redis也有,其数据结构含:
- 头节点、尾节点、节点值复制函数、节点值释放函数、节点值对比函数、链表长度记录、dup复制函数、free释放函数、match匹配函数
相关函数如下(随便看下就好了):
源码分析如下:
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;
x