Redis的ZSet底层数据结构

一、ZSet底层数据结构

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

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

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

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

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

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

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

相关推荐
sbjdhjd7 小时前
Redis 主从复制、哨兵高可用与 Cluster 集群部署实验手册
运维·前端·redis·云原生·开源·bootstrap·html
Trouvaille ~8 小时前
【Redis篇】Redis 哨兵(Sentinel):高可用自动故障转移
数据库·redis·缓存·中间件·sentinel·高可用·哨兵
giaz14n9X9 小时前
Redis 分布式锁进阶第五十七篇
数据库·redis·分布式
啦啦啦啦啦zzzz9 小时前
数据结构:红黑树理论
数据结构·c++·红黑树
WyCAGy8ij9 小时前
Redis 分布式锁进阶第二篇讲解
数据库·redis·分布式
San813_LDD10 小时前
[数据结构]LeetCode学习
数据结构·算法·图论
小欣加油11 小时前
leetcode994 腐烂的橘子
数据结构·c++·算法·leetcode·bfs
学Linux的语莫12 小时前
redis的数据类型和使用
数据库·redis·缓存
Felven12 小时前
B. Fair Numbers
数据结构·算法
ysu_031413 小时前
leetcode数据结构与算法1~4
c语言·数据结构·学习·算法·leetcode