跳跃表
跳跃表支持平均 O(\log N) 最坏 O(N) 复杂度的节点查找,还可以通过顺序性操作来批量处理节点。
在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序都使用跳跃表来代替平衡树。
举个例子, 是一个有序集合键,这个有序集合以水果名为成员,水果价钱为分值,保存了 130
款水果的价钱:
fruit-price
有序集合的所有数据都保存在一个跳跃表里面,其中每个跳跃表节点(node)都保存了一款水果的价钱信息,所有水果按价钱的高低从低到高在跳跃表里面排序:
和链表、字典等数据结构被广泛地应用在 Redis 内部不同,Redis 只在两个地方用到了跳跃表,一个是实现有序集合键,另一个是在集群节点中用作内部数据结构,除此之外,跳跃表在 Redis 里面没有其他用途。
本章将对 Redis 中的跳跃表实现进行介绍,并列出跳跃表的操作 API 。