redis数据结构-链表,压缩表,快速表
2021/4/30 2:25:22
本文主要是介绍redis数据结构-链表,压缩表,快速表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
大纲:
- 双向链表-list
- 压缩表-ziplist
- 快速表-quicklist
一、双向链表-list
redis早期版本处理list用的就是双向链表
struct listNode{ struct listNode *prev; //前一个节点 struct listNode *nenxt; //下一个节点 void *value;//节点的值 } struct list { listNode *head; //头节点 listNode *tail; //头节点 long len;//节点数量 }
二、压缩表-ziplist
2.1ziplist组成
- zlbytes: ziplist的大小(单位: 字节)
- zltail: ziplist最后一个节点的偏移量,有ziplist守地址,有偏移量可以定位最后一个entry用于反向遍历
- zllen: ziplist的节点(entry)个数
- entry: 节点
- zlend: 值为0xFF,ziplist的结尾
2.2entry的组成
data就是实际存放的数据
prelength是前节点的大小,也是用与反向遍历的,如果前节点小于254字节,则entry中prelength占用1个字节来记录,如果大于等于254,prelength占用5个字节,第一字节固定254,后4个字节表示大小
encoding用于表示data存储的数据类型和数据大小
最后1111xxxx表示超小数0-12。0000,1110,1111被占掉了,xxxx可以表示1-13,实际表示的值再-1。
上图中pppqqqrrrsssttt都是用来表示字符串大小的
三、快速表-quicklist
这篇关于redis数据结构-链表,压缩表,快速表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31Tiny RDM:你的下一代Redis桌面GUI神器-icode9专业技术文章分享
- 2024-03-21redisinsight-v2
- 2024-02-26Typed property App\Api\Mapper\GamePropsConfigMapper::$apiRedis must not be accessed before initia-icode9专业技术文章分享
- 2024-02-21redisson getlock
- 2024-02-20redis config
- 2024-02-20redis leaderboard
- 2024-01-23缓存选型:Redis or MemCache
- 2024-01-22面试官:Redis持久化能关吗?怎么关?
- 2024-01-21Redis压测工具redis-benchmark-icode9专业技术文章分享
- 2024-01-19这才是你应该了解的Redis数据结构!