Redis链表实现的特性:
- 双端:双向链表,获取某个节点的前置节点和后置节点都是O(1);
- 无环:
- 带表头指针和表尾指针
- 带链表长度计数器:
- 多态
typedef struct list{
//表头节点
listNode *head;
//表尾节点
listNode *tail;
//链表所包含的节点数量
unsigned long len;
//节点值复制函数
void *(*dup)(void *ptr);
//节点值释放函数
void *(*free)(void *ptr);
//节点值对比函数
int (*match)(void *ptr,void *key);
}list;
- 链表被广泛用于实现Redis的各种功能,比如列表键、发布与订阅、慢查询、监视器等。
- 每个链表节点由一个listNode结构来表示,每个节点都有一个指向前面和后面节点的指针
- 链表使用list结构来表示,带有头结点指针、表尾结点指针、链表长度等信息;
- 为链表设置不同的类型特定函数,链表可以用于保存各种不同类型的值。