Redis的ZSet底层数据结构

一、ZSet底层数据结构

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

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

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

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

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

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

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

相关推荐
Craaaayon8 小时前
如何选择两种缓存更新策略(写缓存+异步写库;写数据库+异步更新缓存)
java·数据库·redis·后端·缓存·mybatis
少许极端9 小时前
算法奇妙屋(十)-队列+宽搜(BFS)
java·数据结构·算法·bfs·宽度优先·队列
异步的告白10 小时前
C语言-数据结构-1-动态数组
c语言·数据结构·c++
foxbillcsdn10 小时前
《Redis应用实例》Java实现(28):栈
java·redis
Miraitowa_cheems12 小时前
LeetCode算法日记 - Day 98: 分割回文串 II
数据结构·算法·leetcode·深度优先·动态规划
立志成为大牛的小牛12 小时前
数据结构——三十九、顺序查找(王道408)
数据结构·学习·程序人生·考研·算法
星辰_mya12 小时前
亲爱的redis你好
redis
2301_8079973812 小时前
代码随想录-day30
数据结构·c++·算法·leetcode
ゞ 正在缓冲99%…13 小时前
leetcode1771.由子序列构造的最长回文串长度
数据结构·算法·leetcode
Mr.H012714 小时前
快速排序的常见构思
数据结构·算法