先按照redis设计与实现原话介绍一下链表在redis中都实现了什么
1、当list列表键数据内容比较多,或者节点比较多就会使用链表实现底层
2、发布订阅功能
3、慢查询
4、监视器等
列表一些特性
1、获取某个节点的前置、后置节点的时间复杂度都是0(1)
2、获取链表的头节点和尾节点的时间复杂度同样是0(1)
3、获取列表长度的时间复杂度同样是0(1)
4、因为unsigned long的关系,最大存储list长度为大概40亿以后在很多地方都会看到这个值
链表的数据结构
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;
typedef struct listNode {
struct listNode *prew;
struct listNode *next;
void *value;
}listNode