菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
3379
0

Redis 第二讲 LIST 类型

原创
05/13 14:22
阅读数 1382

LIST 实现原理基于数据结构中的双向链表

adlist.h/list    链表主体结构
typedef struct list {
         listNode *head;   //表头节点
                 listNode *tail;      //链表尾部节点
                 unsigned long len;  //链表节点数量
                 void *(*dup) (void *ptr);  //节点值赋值函数
                 void *(*free) (void *ptr);  //节点值释放函数 
                 int (*match) (void *ptr, void *key); //节点值对比函数
}
adlist.h/listNode  链表每个节点的结构
typedef stuct listNode {
                struct listNode *prev;  //前面节点
                struct listNode *next; //后面的节点
                void * value;   //当前节点的值
}

无环链表,头上一个元素,尾下一个元素指向NULL。
找头找尾 ,找前找后,查长度 复杂度都是O1。

重点 :REDIS链表dup,fee , match 可以保存不通类型的值????这个没有特别好的理解。

发表评论

0/200
3379 点赞
0 评论
收藏
为你推荐 换一批