Redis 跳跃表结构

151 阅读1分钟

前言

<redis设计与实现>, 俗话说的好,若想运用东西好,必然要了解内容构成机制,所以我就来做笔记来理解内部的数据结构。

redis运用的地方

  1. 有序集合
  2. 集群节点

跳跃表

什么是跳跃表呢?跳跃表就是一个数据结构,他的构成由

  1. list 储存跳跃表的整体内容
  2. listNode 储存的是跳跃表节点的内容

数据结构

list

跳跃表list所包含的结构有

  1. header 指向跳跃表头节点
  2. tail 指向跳跃表尾节点
  3. length 代表跳跃表一共有多少个节点,不计算头节点
  4. level 代表跳跃表节点里面最大层数值,不计算头节点

listNode

  1. level [] 数组 里面包含的是层范围1~32之间, 每个层中包含两个属性:
  • forward:指向某个节点位置指针
  • span 当前节点距离某个节点的距离
  1. backward 指向前一个节点
  2. score 分数
  3. obj 包含的对象(SSD字符串)

图表示

image.png

总结

  1. 跳跃表是实现有序集合的底层实现之一
  2. redis跳跃表是由两个结构构成的 list,listNode.
  3. 跳跃表节点层数的范围为 1~32
  4. 跳跃表节点里的分数是可以相同的但是对象(obj)是唯一的
  5. 跳跃表节点按照分数的大小进行排序的,分值相同时根据对象的字典大小进行排序。 多写笔记加固自己的记忆。