这次让你彻底学会redis中跳表原理,不懂你打我

Posted 程序编织梦想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这次让你彻底学会redis中跳表原理,不懂你打我相关的知识,希望对你有一定的参考价值。

一、前言

redis是一款优秀的内存高速缓存数据库,它支持较高的并发量。其中redis中是用跳表来索引数据的,本章就详细讲解一下跳表的原理。

讲之前,我们现在身临其境的了解一下redis当时在选择跳表作为检索工具的初衷。

现在有这样一个场景:内存中有几十万的数据,如何进行快速的检索,并且能快速的增、删、改、查呢。

作为redis的作者,他可能有下面几种方案:

方法1:用数据库来存储。

这种方法弊端就在于速度太慢了。这要是放在高并发的情况下(比如:秒杀),还不得各种慢查询啊。

方法2:有序数组来存储。

数组来存储对于检索来说用折半查找速度非常快(时间复杂度:O(log2n) ),但是弊端就在于插入、删除太慢了。

有序数组插入元素如下图:

图中我们可以看出数组的插入需要将大量数据后移一位,有序数组插入一个数据的平均时间复杂度是O(n),这对于高并发,高吞吐量的场景来说还是太慢了。

同样道理,有序数组删除一个元素,为了保持数组的有序需要将删除位置以后的数据都往前移动一个位置,平均时间复杂度也是(O(n))。

关于如何计算

以上是关于这次让你彻底学会redis中跳表原理,不懂你打我的主要内容,如果未能解决你的问题,请参考以下文章

Git的简介和安装过程,看不懂你打我

Git的简介和安装过程,看不懂你打我

Innodb的RR到底有没有解决幻读?看不懂你打我!

面试必问的 volatile 关键字,通俗易懂,看完还不懂你打我。

详解 Java 中的自动装箱与拆箱,5000+字,看了不懂你打我

看不懂你打我全网最全的spring dispatcher请求流程解析不看就亏了