Redis的ZSet底层数据结构

一、ZSet底层数据结构

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

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

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

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

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

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

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

相关推荐
Flynt1 分钟前
Redis Cluster主节点挂了,为什么"高可用"还全员掉线?我把三次kill的记录翻出来了
数据库·redis·分布式
lvwangshu2 小时前
登录日志 题解
数据结构·线段树·题解·技巧·性质题·思维好题·细节题
写后端的胖头鱼3 小时前
一文详解Cache Aside(旁路缓存模式)
redis·缓存·延迟双删·缓存一致
CQU_JIAKE3 小时前
10.2【A】
数据结构
Web3&Basketball3 小时前
用FastAPI+Redis 复刻常驻Agent
redis·bootstrap·fastapi
C++ 老炮儿的技术栈3 小时前
不一样的数值交换
数据结构·c++·人工智能·算法·c·csdn开发云
青山木4 小时前
Hot 100 --- 编辑距离
java·数据结构·算法·leetcode·动态规划
梦帮科技5 小时前
vLLM / TensorRT-LLM 极限推理:PagedAttention 细粒度物理页表管理与连续批处理(Continuous Batching)实战
数据结构·人工智能·分布式·python·深度学习·算法·vllm
H.莓飛7 小时前
【数据结构】链表_OJ题
linux·数据结构·算法·链表
All for pursuit.7 小时前
【回溯-4】46.全排列
数据结构·c++·算法·leetcode