最近在看node的时候又看到redis了,于是对其为什么性能这么高产生了疑问,于是来研究并记录一下。

1. 概念

首先,先明确Redis是一种NoSQL(=Not only SQL)数据库,只是由于其数据结构简单以及性能极高被用来当做缓存服务器了。下面从三个方面来对题目进行解释:

  1. 单线程
  2. IO多路复用
  3. 纯内存数据
  4. 简单数据结构类型

2.单线程

其实就性能上来说多线程还是要优于单线程的,这里的单线程指的是对于单线程的极致利用:保证了每个操作的原子性,也减少了线程的上下文切换和竞争。

3.IO多路复用

Redis采用网络IO多路复用技术来保证在多连接的时候保证系统的高吞吐量。这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗),且Redis在内存中操作数据的速度非常快(内存内的操作不会成为这里的性能瓶颈),主要以上两点造就了Redis具有很高的吞吐量。

4.纯内存数据

这里不多做解释,内存的存储速度是仅次于cpu缓冲区的储存器,速度自然快。

5.简单数据结构类型

Redis全程使用hash结构,读取速度快,还有一些特殊的数据结构,对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度。

文章目录
2人点赞