一、概述
跳跃表是一种有序数据结构,通过每个节点中维持多个指向其他节点的指针,从而达到快速访问的目的。
跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找。
跳表在redis中有两个地方有用到,一个是实现有序集合键,另一个是集群节点中用作内部数据结构。
二、结构
Redis的跳跃表分为Node和list两个结构。
跳跃表节点
层:level数组可以包含多个元素,每个元素都包含一个指向其他节点的指针,跳跃表可以通过forward指针跳向其他节点,一般来说层的数量越多,访问节点的速度越快。
每次创建节点的时候,程序根据幂次定律随机生成一个介于1-32之间的值作为level数组的大小,这个大小就是层的高度。
前进指针:每个层都有个前进指针,可以通过前进指针来遍历
跨度:就两个节点之间的距离