Redis的ZSet底层数据结构

一、ZSet底层数据结构

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

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

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

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

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

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

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

相关推荐
虹科网络安全4 小时前
艾体宝洞察 | Redis vs ElastiCache:哪个更具成本效益?
数据库·redis·缓存
a努力。8 小时前
美团Java面试被问:Redis集群模式的工作原理
java·redis·后端·面试
关于不上作者榜就原神启动那件事10 小时前
Spring Data Redis 中的 opsFor 方法详解
java·redis·spring
一岁天才饺子11 小时前
Redis漏洞复现
redis·web安全·网络安全
Boilermaker199212 小时前
[Redis] 分布式缓存与分布式锁
redis·分布式·缓存
Yeats_Liao12 小时前
MindSpore开发之路(八):数据处理之Dataset(上)——构建高效的数据流水线
数据结构·人工智能·python·机器学习·华为
虹科网络安全12 小时前
艾体宝产品 | 隆重推出 Haink:Redis 的应用型 AI 智能体
数据库·人工智能·redis
客梦13 小时前
数据结构-线性表
数据结构·笔记
镜花水月linyi13 小时前
MySQL与Redis缓存一致性方案
redis·后端·mysql
鹿角片ljp13 小时前
力扣226.翻转二叉树-递归
数据结构·算法·leetcode