Redis跳跃表

一.实现
由zskiplistNode和zskiplist两个结构定义,其中zskiplistNode结构用于跳跃表节点,zskiplist结构用于保存跳跃表节点的相关信息,比如节点数量,表头表尾的节点指针。
Redis跳跃表

  • header:指向跳跃表的表头节点
  • tail:指向跳跃表的表尾节点
  • level:记录跳跃表内,层数最大的那个节点的层数(表头节点层数不计算在内)
  • length:记录跳跃表的长度,也就是包含节点的数量
    Redis跳跃表
    Redis跳跃表

总结

跳跃表是有序集合的底层实现之一。

  • Redis的跳跃表由zskiplistNode和zskiplist两个结构组成,其中zskiplist用于表示跳跃表的信息,而zskiplistNode则用于保存跳跃表的节点。
  • 每个跳跃表节点的层数都是1~32之间的随机数。
  • 在同一个跳跃表中,多个节点可以表示相同的分值,但每个节点的成员对象必须是唯一的。
  • 跳跃表中的节点按分值大小进行排序,分值相同时按成员变量的大小进行排序。