摘自:【大课堂】Redis中hash、set、zset的底层数据结构原理 - 掘金
仅做个人备份,浏览请看原文
【hash】
hash的底层存储有两种数据结构,一种是ziplist,另外一种是hashtable。
(1) ziplist
hash对象只有同时满足以下条件,才会采用ziplist编码:
- hash对象保存的键和值字符串长度都小于64字节
- hash对象保存的键值对数量小于512 ziplist存储的结构如下
当数据量比较小的时候,我们会将所有的key及value都当成一个元素,顺序的存入到ziplist中,构2成有序。
(2) hashtable
见 #### redis hash 实现结构 ####_wangfy_的博客-CSDN博客
【set】
set是一个无序的、自动去重的集合数据类型,Set底层用两种数据结构存储,一个是inset,一个是hashtable。
(1) inset
inset为可以理解为有序数组,使用inset数据结构需要满足下述两个条件:
- 元素个数少于512
- 元素是整型
查询方式一般采用二分查找法,实际查询复杂度也就在log(n)
(2) hashtable
其中hashtable的key为set中元素的值,而value为null。
hash结构实现原理 见 见 #### redis hash 实现结构 ####_wangfy_的博客-CSDN博客