Redis速度这么快的两个原因

    作者:匿名更新于: 2021-10-25 21:11:10

    大神带你学编程,欢迎选课

      大家在数据库使用时,特别是Redis数据库,它的速度是很快的。这个数据大家可以从日常实践中去感受,另外,还可以参考官方的数据,Redis的QPS可以达到100000(每秒请求数)。

      今天小编主要是来讨论影响Redis速度的因素。

      影响Redis速度的因素

      1、基于内存实现

      Redis是基于内存的数据库,与磁盘数据库相比,它可以做到吊打磁盘的速度。

      无论读取和写入都是在内存中完成,我们分别比较了内存操作与磁盘操作的差异。

      磁盘调用  

     

      内存操作

      内存由CPU直接控制,也就是CPU内部集成的内存控制器,所以说内存直接与CPU对接,享受与CPU通信的最优带宽。

      用一个张图来对系统的各种延迟时间进行量化(部分数据引用Brendan Gregg)

      

     

      2、高效的数据结构

      在学习MySQL时,我知道用B+Tree数据结构来提高检索速度,因此Redis速度应该也与数据结构有关。

      Redis共有5种数据类型,分别是String、List、Hash、Set、SortedSet。

      不同的数据类型底层使用一种或多种数据结构进行支持,旨在追求更快的速度。

      比如String就是应用SDS简单动态字符串来实现的。

      SDS简单动态字符串优势

      SDS中len保存这字符串的长度,O(1)时间复杂度查询字符串长度信息。

      空间预分配:修改SDS后,程序不仅为SDS分配必要的空间,而且分配了额外的未使用空间。

      惰性空间释放:当SDS执行缩短操作时,程序不会回收多余的内存空间,而是使用free字段将这些字节数量记录下来不释放,然后在需要append操作的情况下直接使用free中未使用的空间,从而减少分配内存。

      结尾

      本文主要谈到了Redis速度快的两个原因,一个是基于内存实现,所以相比磁盘数据库来说,它的速度完全是吊打。

      另外,它还具有高效的数据结构,比如String来说,它与底层数据库的关系是SDS简单动态字符串。本文谈到了SDS简单字符串的优势,从而帮助大家理解。

        >>>>>>点击进入Python专题

课课家教育

未登录