Redis的ZSet底层数据结构

一、ZSet底层数据结构

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

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

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

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

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

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

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

相关推荐
岑梓铭18 小时前
《考研408数据结构》第六章(5.1+5.2+5.3树、二叉树、线索二叉树)复习笔记
数据结构·笔记·考研·408·1024程序员节
苏纪云18 小时前
数据结构<C++>——数组
java·数据结构·c++·数组·动态数组
黄思搏19 小时前
2-3-4树 - 2-3-4 Tree 原理与 C# 实现
数据结构·1024程序员节
潼心1412o19 小时前
数据结构(长期更新)第3讲:顺序表相关操作
数据结构·1024程序员节
共享家952719 小时前
数据结构-并查集
数据结构·c++·算法
阿祥~20 小时前
windows 安装 Redis
数据库·redis·缓存
小年糕是糕手21 小时前
【C语言】函数栈帧的创建和销毁
java·c语言·开发语言·数据结构·c++·链表
ZZHHWW21 小时前
Redis 哨兵模式详解
redis·后端
努力努力再努力wz21 小时前
【Linux进阶系列】:信号(下)
java·linux·运维·服务器·开发语言·数据结构·c++
TU^21 小时前
C语言习题~day27
c语言·数据结构·算法