Redis的ZSet底层数据结构

一、ZSet底层数据结构

c 复制代码
typedef struct zset{
	// 跳表
	zskiplist *zsl;
	// 字典
	dict *dic;
}

zset类型的底层数据结构是由压缩列表或跳表、**字典(哈希表)**实现的。

  • 如果zset中元素个数小于128个,并且每个元素的值小于64字节时,redis采用压缩列表作为zset的底层数据结构;
  • 在不满足上述条件时,redis采用跳表作为zset的底层数据结构。

zset 使用跳表和哈希表,既可以高效地进行范围查询,也能高效地进行单点查询。

二、跳表和哈希表是怎么组织的?

跳表和哈希表各自按照自己的方式存放,但是会指针会指向同一份数据。

zset在执行数据插入或数据更新时,会依次在跳表和哈希表中插入或更新相应的数据,从而保证跳表和哈希表中数据的一致。

相关推荐
wu_asia20 分钟前
方阵对角线元素乘积计算
数据结构·算法
想逃离铁厂的老铁1 小时前
Day43 >> 300.最长递增子序列 + 674. 最长连续递增序列+ 718. 最长重复子数组
数据结构·算法
宵时待雨1 小时前
数据结构(初阶)笔记归纳4:单链表的实现
c语言·开发语言·数据结构·笔记·算法
wm10431 小时前
代码随想录第三天 链表
数据结构·链表
BLSxiaopanlaile2 小时前
关于子集和问题的几种解法
数据结构·算法·剪枝·回溯·分解
難釋懷2 小时前
Redis命令-Hash命令
数据库·redis·哈希算法
難釋懷2 小时前
Redis命令-List命令
数据库·redis·list
じ☆冷颜〃3 小时前
交换代数的解析延拓及在CS的应用
c语言·数据结构·笔记·线性代数·密码学
hanqunfeng3 小时前
(七)Redis 命令及数据类型 -- Hash
数据库·redis·哈希算法
惊讶的猫3 小时前
redis总结
redis