本文主要是介绍Redis的ZSet底层数据结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、ZSet底层数据结构
typedef struct zset{// 跳表zskiplist *zsl;// 字典dict *dic;
}
zset类型的底层数据结构是由压缩列表或跳表、**字典(哈希表)**实现的。
- 如果zset中元素个数小于128个,并且每个元素的值小于64字节时,redis采用压缩列表作为zset的底层数据结构;
- 在不满足上述条件时,redis采用跳表作为zset的底层数据结构。
zset 使用跳表和哈希表,既可以高效地进行范围查询,也能高效地进行单点查询。
二、跳表和哈希表是怎么组织的?
跳表和哈希表各自按照自己的方式存放,但是会指针会指向同一份数据。
zset在执行数据插入或数据更新时,会依次在跳表和哈希表中插入或更新相应的数据,从而保证跳表和哈希表中数据的一致。
这篇关于Redis的ZSet底层数据结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!