Redis的ZSet底层数据结构

一、ZSet底层数据结构

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

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

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

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

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

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

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

相关推荐
Jul1en_17 分钟前
【Java 脚手架】封装通用工具类-3
java·开发语言·redis·缓存·ai·bootstrap·rabbitmq
_Narcissus_1 小时前
分治&递归
数据结构·c++·笔记·算法·leetcode·递归·分治
李昊哲小课1 小时前
Spring Boot 4 旅游主题实战教程 阶段四:缓存与底层进阶
spring boot·redis·缓存·性能优化·log4j·旅游·性能
不灭的黄金瞳1233 小时前
C语言实现单链表
c语言·数据结构
上火的金鱼妹5 小时前
redis集群部署与连接
数据库·redis·缓存
这是程序猿5 小时前
深入剖析Java HashMap:底层原理、数据结构与核心机制全解析
java·开发语言·数据结构
MetaLite5 小时前
Spring-Scheduled多实例重复执行怎么办-Redis分布式锁如何只让一个节点运行
redis·分布式·spring
waillyer6 小时前
企业知识库智能问答 Agent(React + Nest)
javascript·redis·agent
HanhahnaH6 小时前
各数据结构操作的时间复杂度汇总
数据结构·算法
_wxd6666 小时前
排序-堆排序(Heap Sort)
数据结构