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