vlambda博客
学习文章列表

[每日一题]:Redis底层数据结构?

参考答案如下:


福哥口诀法:简链字跳整 压快压


SDS simple synamic string:简单动态字符串。支持自动动态扩容的字节数组 。

list :链表 。双端链表。

dict :字典。使用双哈希表实现的, 支持平滑扩容的字典 。

zskiplist :跳跃表。附加了后向指针的跳跃表 。

intset :整数集合。用于存储整数数值集合的自有结构 。

ziplist :压缩列表。一种实现上类似于TLV, 但比TLV复杂的, 用于存储任意数据的有序序列的数据结构 。

quicklist:快速列表。一种以ziplist作为结点的双链表结构, 实现的非常不错 。

zipmap :压缩字典。一种用于在小规模场合使用的轻量级字典结构 。


String底层是SDS 内部编码 int,emstr,raw 。

hash是ziplist与hashtable 。

list采取的双端链表linklist,压缩列表ziplist。

set是hashtable和inset 。

zset是ziplist和skiplist。


https://stor.51cto.com/art/201910/605032.htm    Redis中8种数据结构的底层数据结构源码详解
https://www.jianshu.com/p/c111d2a87ec4    edis底层数据结构
https://www.cnblogs.com/jaycekon/p/6227442.html    深入浅出Redis-redis底层数据结构(上)
https://blog.csdn.net/abel_liujinquan/article/details/89339599    Redis六种底层数据结构
https://www.cnblogs.com/ysocean/p/9080942.html    Redis详解(四)------ redis的底层数据结构