【Redis 源码】4adlist列表.md
1 数据结构说明
在 Redis 中,链表是用来实现列表(list)数据类型的底层数据结构之一。链表在 Redis 中被称为 list
,它是一个双向链表,每个节点包含一个指向数据的指针。
2 数据结构
typedef struct listNode {
struct listNode *prev;
struct listNode *next;
void *value;
} listNode;
prev
:指向当前节点的前一个节点。next
:指向当前节点的后一个节点。value
:存储在节点中的实际数据。
typedef struct list {
2 listNode *head;
3 listNode *tail;
4 void *(*dup)(void *ptr);
5 void (*free)(void *ptr);
6 int (*match)(void *ptr, void *key);
7 unsigned long len;
8} list;
head
:指向链表的第一个节点。tail
:指向链表的最后一个节点。dup
:一个复制数据的函数指针,用于在需要复制数据时使用。free
:一个释放数据的函数指针,用于释放节点中的数据。match
:一个匹配数据的函数指针,用于判断节点中的数据是否与给定的键匹配。len
:链表中节点的数量。
typedef struct listIter {
2 listNode *next;
3 int direction;
4} listIter;
链表迭代器定义,
next
:指向下一个要访问的节点。direction
:指示迭代的方向,通常是正向还是反向。