[Redis6]跳跃表(跳表)

Posted 唐火

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Redis6]跳跃表(跳表)相关的知识,希望对你有一定的参考价值。

跳跃表(跳表)

简介

有序集合在生活中比较常见,例如根据成绩对学生排名,根据得分对玩家排名等。对于有序集合的底层实现,可以用数组、平衡树、链表等。数组不便元素的插入、删除;平衡树或红黑树虽然效率高但结构复杂;链表查询需要遍历所有效率低。Redis采用的是跳跃表。跳跃表效率堪比红黑树,实现远比红黑树简单。

实例

对比有序链表和跳跃表,从链表中查询出51

  • 有序链表


要查找值为51的元素,需要从第一个元素开始依次查找、比较才能找到。共需要6次比较。

  • 跳跃表


从第2层开始,1节点比51节点小,向后比较。

21节点比51节点小,继续向后比较,后面就是NULL了,所以从21节点向下到第1层

在第1层,41节点比51节点小,继续向后,61节点比51节点大,所以从41向下

在第0层,51节点为要查找的节点,节点被找到,共查找4次。

从此可以看出跳跃表比有序链表效率要高

以上是关于[Redis6]跳跃表(跳表)的主要内容,如果未能解决你的问题,请参考以下文章

Redis6.0基础

Redis6.0基础

Redis6.0基础

Redis6.0基础

原来这就是传说中的跳跃表,不过如此(附:跳跃表的Java实现)

每日一博 - 如何理解跳表(SkipList)