首页 > 代码库 > redis数据结构存储Linked List设计细节(redis的设计与实现笔记)
redis数据结构存储Linked List设计细节(redis的设计与实现笔记)
redis里拥有一个灵活扩展且获取表头表尾复杂度为O(1)的双端列表,分为list和listNode2部分组成。
list:
1 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;
listNode:
1 typedef struct listNode { 2 struct listNode *prev;//前驱指针 3 struct listNode *next;//后继指针 4 void *value; //节点的值 5 } listNode;
以下是双向链表的实现原理:
list结构存在的意义:
1.获取首元素和尾元素的时间复杂度为O(1),且可以选择向后或向前遍历链表元素
2.获取元素数量时间复杂度为0(1),无需遍历即可快速取出元素数量
redis数据结构存储Linked List设计细节(redis的设计与实现笔记)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。