ZSet也就是SortedSet,其中每一个元素都需要指定一个score值和member值:
因此,zset底层数据结构必须满足键值存储、键必须唯一、可排序这几个需求。在这里罗列一下skipList和HT
当元素数量不多时,HT和SkipList的优势不明显,而且更耗内存。因此zset还会采用ZipLit结构来节省内存,不过需要同时满足两个条件:
ZSet不满足上面的两个条件时的结构模型
ZSet添加元素的时候添加的一个代码片段
从上面的代码可以看出当zset_max_ziplist_value被设置为0的时候代表zipList被禁用了
当ZSet满足再到不满足上面两个条件时它会由ZipList转为SkipList和Dict,具体可以看他的插入方法
ZSet的插入方法
ziplist本身没有排序功能,而且没有键值对的概念,因此需要有zset通过编码实现:
评论