Redis 中的有序集合(zset) 支持的操作:
插入一个元素
删除一个元素
查找一个元素
有序输出所有元素
按照范围区间查找元素(比如查找值在 [100, 356] 之间的数据)
其中,前四个操作红黑树也可以完成,且时间复杂度跟跳表是一样的。但是,按照区间来查找数据这个操作,红黑树的效率没有跳表高。按照区间查找数据时,跳表可以做到 O(logn) 的时间复杂度定位区间的起点,然后在原始链表中顺序往后遍历就可以了,非常高效。
- 跳表的代码实现相对于红黑树更容易实现,
- 跳表更加灵活,他可以通过改变索引构建策略,有效平衡执行效率和内存消耗。(红黑树的平衡是通过左旋转和有旋转来进行平衡)
原文链接:https://blog.csdn.net/qq_34412579/article/details/101731935