AP计算机科学A(APcomputer science A)复习备考攻略视频教程
43759 人在学
大家在数据库使用时,特别是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专题