为什么Redis单线程快?原因是什么?

KLQ 2020-06-28 17:19:17 java常见问答 5966

你知道Redis单线程为什么会那么的快吗?很多人对于这个原因都不是很清楚,那么下面的话,就一起通过文章来进行一下了解吧。

Redis快的原因是什么?

对于Redis快的原因,主要是因为以下的三点。

(1)完全基于内存

(2)数据结构非常的简单,对于数据的操作也简单

(3)使用多路I/O复用模型

以上的三个原因,我们主要来讲一下第三个原因。

多路I/O复用模型是利用select、poll、epoll能够同时监察多个流的I/O事件的能力,在空闲时,会把前线程阻塞掉,在有一个或者是多个流有I/O事件的时候,就会从阻塞态当中唤醒,所以,程序就会轮询一遍所有的流,并且,依次顺序的处理就绪的流,这样做的话,就可以避免很多无用操作。

注意,这里的多路它所指的是多个网络连接,这里的复用指的是复用同一个线程。

采用多路I/O复用技术能够让单个线程高效的处理多个连接请求,并且,Redis在内存当中操作数据的速度非常的迅速,主要以上两点造就了Redis具有很高的吞吐量。

和Memcached不一样,Redis没有直接使用Libevent,它是自己完成了一个非常轻量级的对select、epoll、evport、kqueue这些通用的接口的实现。

在不一样的系统调用选用适合的接口,linux下默认是epoll。

因为Libevent比较重更通用代码量也就很庞大,拥有很多Redis用不上的功能,Redis为了追求轻巧并且去除依赖,就选择自己去封装了一套。

延伸阅读:

单进程单线程好处有哪些?

(1)代码会更加的清洗,并且处理逻辑会更加的简单

(2)不需要去考虑各种锁的问题,也不会有加锁释放锁操作,不会出现因为死锁而导致的性能消耗

(3)没有多进程或者是多线程导致的切换而消耗CPU

Redis单线程快的原因你都知道吗?对于Redis还有什么问题不了解的吗?可以继续关注奇Q工具网,更多Redis常见问题可以为你解答哦。

推荐阅读:

redis常用命令如何操作?redis命令有哪些?

redis数据结构有哪些?redis数据结构使用方式

redis配置方式如何实现?有哪些常见参数?