【redis前传】zset如何解决内部链表查找效率低下|跳表构建

本文介绍了Redis中Zset的结构,特别是其基于跳表的实现方式,解决了链表查找效率低的问题。文章详细阐述了Zset的内部结构,包括基本单元、zskiplist的level和forward、双链表、随机层,以及查找过程。通过对Zset的深入理解,可以更好地掌握相关命令的内部工作原理,如zcard、zcount、zlecount和zrank。
摘要由CSDN通过智能技术生成

 zset作为有序集合,内部基于跳表或者说索引的方式实现了数据的快速查找。解决了链表查询效率低下的痛点

前言

  • 本章节我们将视角下推,继续学习Redis五大天王中的zset数据结构 ; zset是有序不重复集合其内部元素唯一且是有序的,他的排序标准是根据其内部score维度进行排序的。

zset结构

image-20210705144222654

基本单元

  • 关于zset结构很简单,一个是字典结构(简单理解成Hash结构),另外一个是跳跃表结构 ;
  • 我们根据上面zset的结构图也能够看出来,zskiplist实际上就是一个链表。

zskiplist

image-20210705145402021

  • 我们查看源码不难看出其内部结构是对zset中链表的一个抽象描述。zskiplist首先会对这个链表记录其头结点、尾结点方便通过zskiplist进行遍历操作。剩下的length自然就是对内部的这个链表数量的统计。比较抽象的是这个level的理解。在上面
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值