你知道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常见问题可以为你解答哦。
推荐阅读: