为什么Redis选择使用跳表而不是红黑树来实现有序集合?

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 01:35   29   0

Redis 中的有序集合(zset) 支持的操作:

插入一个元素

删除一个元素

查找一个元素

有序输出所有元素

按照范围区间查找元素(比如查找值在 [100, 356] 之间的数据)

其中,前四个操作红黑树也可以完成,且时间复杂度跟跳表是一样的。但是,按照区间来查找数据这个操作,红黑树的效率没有跳表高。按照区间查找数据时,跳表可以做到 O(logn) 的时间复杂度定位区间的起点,然后在原始链表中顺序往后遍历就可以了,非常高效。

  • 跳表的代码实现相对于红黑树更容易实现,
  • 跳表更加灵活,他可以通过改变索引构建策略,有效平衡执行效率和内存消耗。(红黑树的平衡是通过左旋转和有旋转来进行平衡)

原文链接:https://blog.csdn.net/qq_34412579/article/details/101731935

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP