下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Redis速度这么快的两个原因

作者:匿名     来源: Python点击数:1261发布时间: 2021-10-25 21:11:10

标签: Python学习Redis因素

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

  大家在数据库使用时,特别是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专题

赞(13)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程