Redis的ZSet底层数据结构

一、ZSet底层数据结构

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

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

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

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

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

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

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

相关推荐
一叶之秋141235 分钟前
从零开始:打造属于你的链式二叉树
数据结构·算法
q***d17343 分钟前
后端缓存技术学习资源,Redis+Memcached
redis·学习·缓存
m***11901 小时前
Redis 设置密码(配置文件、docker容器、命令行3种场景)
数据库·redis·docker
麦兜*2 小时前
Redis在Web3中的应用探索:作为链下状态缓存与索引层
java·spring boot·redis·spring cloud·缓存·docker·web3
yuuki2332334 小时前
【数据结构】栈
c语言·数据结构·后端
苏小瀚12 小时前
算法---FloodFill算法和记忆化搜索算法
数据结构·算法·leetcode
苏小瀚12 小时前
算法---二叉树的深搜和回溯
数据结构·算法
R-G-B15 小时前
归并排序 (BM20 数组中的逆序对)
数据结构·算法·排序算法
少许极端15 小时前
算法奇妙屋(十二)-优先级队列(堆)
数据结构·算法·leetcode·优先级队列··图解算法
kupeThinkPoem16 小时前
哈希表有哪些算法?
数据结构·算法