Redis跳跃表
一.实现
由zskiplistNode和zskiplist两个结构定义,其中zskiplistNode结构用于跳跃表节点,zskiplist结构用于保存跳跃表节点的相关信息,比如节点数量,表头表尾的节点指针。
- header:指向跳跃表的表头节点
- tail:指向跳跃表的表尾节点
- level:记录跳跃表内,层数最大的那个节点的层数(表头节点层数不计算在内)
- length:记录跳跃表的长度,也就是包含节点的数量
总结
跳跃表是有序集合的底层实现之一。
- Redis的跳跃表由zskiplistNode和zskiplist两个结构组成,其中zskiplist用于表示跳跃表的信息,而zskiplistNode则用于保存跳跃表的节点。
- 每个跳跃表节点的层数都是1~32之间的随机数。
- 在同一个跳跃表中,多个节点可以表示相同的分值,但每个节点的成员对象必须是唯一的。
- 跳跃表中的节点按分值大小进行排序,分值相同时按成员变量的大小进行排序。