Redis的ZSet底层数据结构

一、ZSet底层数据结构

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

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

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

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

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

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

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

相关推荐
三84425 分钟前
SSRF 从入门到实战(下篇):gopher 打 Redis 实现 RCE
数据库·redis·缓存
青山木14 小时前
Hot 100 --- 数组中的第K个最大元素
java·数据结构·算法·排序算法
wuyk55515 小时前
12.归并排序:分治思想的稳定排序算法
开发语言·数据结构·算法·排序算法
驾驭人生18 小时前
Hangfire.Redis.StackExchange 已归档停更!生产任务卡死、重复执行、网络抖动问题解决方案
数据库·redis·缓存
Chester_199918 小时前
CSP202312C.树上搜索
开发语言·数据结构·c++·蓝桥杯·stl
专注仿真20 小时前
RabbitMQ消息队列实战项目
数据结构·rabbitmq
血小板要健康20 小时前
队列 + 宽搜(BFS):二叉树层序遍历 算法总结
java·数据结构·笔记·算法·leetcode·宽度优先
Felven21 小时前
B. Deja Vu
数据结构·算法
吃饱了得干活21 小时前
Redis 不是死脑筋,它是一套“会进化”的存储系统
redis·后端
不会就选b1 天前
算法日常・每日刷题--<贪心>3
数据结构·算法·leetcode