前言
<redis设计与实现>, 俗话说的好,若想运用东西好,必然要了解内容构成机制,所以我就来做笔记来理解内部的数据结构。
redis运用的地方
- 有序集合
- 集群节点
跳跃表
什么是跳跃表呢?跳跃表就是一个数据结构,他的构成由
- list 储存跳跃表的整体内容
- listNode 储存的是跳跃表节点的内容
数据结构
list
跳跃表list所包含的结构有
- header 指向跳跃表头节点
- tail 指向跳跃表尾节点
- length 代表跳跃表一共有多少个节点,不计算头节点
- level 代表跳跃表节点里面最大层数值,不计算头节点
listNode
- level [] 数组 里面包含的是层范围1~32之间, 每个层中包含两个属性:
- forward:指向某个节点位置指针
- span 当前节点距离某个节点的距离
- backward 指向前一个节点
- score 分数
- obj 包含的对象(SSD字符串)
图表示
总结
- 跳跃表是实现有序集合的底层实现之一
- redis跳跃表是由两个结构构成的 list,listNode.
- 跳跃表节点层数的范围为 1~32
- 跳跃表节点里的分数是可以相同的但是对象(obj)是唯一的
- 跳跃表节点按照分数的大小进行排序的,分值相同时根据对象的字典大小进行排序。 多写笔记加固自己的记忆。