Redis 的发布与订阅,慢查询,监视器等功能也用到了链表,Redis服务器自己使用链表保存多个客户端的状态信息,以及使用链表来构建客户端输出缓冲区。服务器
l链表节点的数据结构定义 数据结构
struct listNode{函数
listNode *prev;spa
listNode *next;指针
void *value; im
}链表
数据结构定义以下next
struct list{数据
listNode *head;客户端
listNode * tail;
unsigned long len; // 链表所包含节点的数量
void (*free)(void *ptr) // 节点释放函数
void *(*dup)(void *ptr) // 节点复制函数
int (*match)(void *ptr,void *key) // 节点值对比函数
}
双端:获取某个节点的前置节点和后置节点的时间复杂度都是O(1)
无环:表头节点的prev指针和表尾节点都指向null
获取表头节点和表尾节点的时间复杂度都为O(1)
获取节点的数量能够经过len,时间复杂度都为O(1)