跳跃表
跳跃表是一种有序数据结构,它通过在每个节点中维持多个指向其它节点的指针,从而达到快速访问节点的目的
跳跃表支持平均 l o g N logN logN、最坏O(n)复杂度的节点查找,还可以通过顺序性操作来批量处理节点。
在大部分情况下,跳跃表的效率可以和平衡树媲美,并且因为跳跃表的实现比平衡树简单,很多程序用跳跃表代替平衡树
Redis使用跳跃表作为有序集合键的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Redis就会使用跳跃表来作为有序集合键的底层实现
fruit-price有序集合的所有数据都保存在一个跳跃表里面,每个跳跃表节点都保存了一款水果价钱信息,所有水果按价钱的高低从低到高在跳跃表里面排序:
- 跳跃表的第一个元素的成员为"banana",它的分值为5;
- 跳跃表的第二个元素的成员为"cherry",它的分值为6.5;
- 跳跃表的第三个元素的成员为"apple",它的分值为8;
Redis跳跃表用在了两个地方:
- 实现有序集合键