Redis的ZSet底层数据结构

一、ZSet底层数据结构

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

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

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

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

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

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

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

相关推荐
陌上丨5 小时前
Redis的Key和Value的设计原则有哪些?
数据库·redis·缓存
ValhallaCoder5 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
月挽清风7 小时前
代码随想录第十五天
数据结构·算法·leetcode
NEXT067 小时前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
曾经的三心草9 小时前
redis-9-哨兵
数据库·redis·bootstrap
张小凡vip9 小时前
Kubernetes--k8s中部署redis数据库服务
redis·kubernetes
惊讶的猫10 小时前
Redis持久化介绍
数据库·redis·缓存
小妖66610 小时前
js 实现快速排序算法
数据结构·算法·排序算法
啦啦啦_999911 小时前
Redis-5-doFormatAsync()方法
数据库·redis·c#
生产队队长11 小时前
Redis:Windows环境安装Redis,并将 Redis 进程注册为服务
数据库·redis·缓存