Redis的ZSet底层数据结构

一、ZSet底层数据结构

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

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

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

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

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

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

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

相关推荐
lzb_kkk1 小时前
【Redis】redis5种数据类型(哈希)
开发语言·redis·算法·缓存·哈希算法
longlongqin3 小时前
redis的 stream数据类型实现 消息队列?
数据库·redis·缓存
云边有个稻草人3 小时前
【刷题】Day4--密码检查
开发语言·数据结构·笔记·算法
kingandlog5 小时前
Redis网络模型、通信协议、内存回收
java·网络·redis
wheeldown7 小时前
【C语言】(指针系列3)数组指针+函数指针+typedef+函数数组指针+转移表
c语言·数据结构·算法
NeVeRMoRE_20247 小时前
【数据结构和算法实践-树-LeetCode107-二叉树的层序遍历Ⅱ】
数据结构·算法·leetcode
2301_778411947 小时前
数据结构----树
数据结构·算法
fhvyxyci7 小时前
【数据结构初阶】队列接口实现及用队列实现栈超详解
c语言·数据结构
小珑也要变强7 小时前
数据结构.
数据结构
茹亦如风8 小时前
【408 数据结构】第2章 线性表
数据结构