高性能IO模型:为什么单线程redis能这么快

93 阅读1分钟

redis单线程

redis单线程主要是指redis的网络io和键值对读写是由一个线程来完成的,这也是redis对外提供键值存储服务主要流程。但redis的其他功能,比如持久化、异步删除、群集数据同步等,其实都是由额外的线程执行的。

redis为什么用单线程

多线程开销

日常写程序时,我们经常会听到一种说法:多线程,可以增加系统吞吐率,或是可以增加系统扩展性。的确,对于一个多线程的系统来说,在有合理的资源分配的情况下,可以增加系统中处理请求操作的资源实体,进而提升系统能够同时处理的请求数量,即吞吐率。不过多线程也面临的共享资源的并访问控制问题。

并发访问控制一直是多线程开发的一个难点问题,如果没有精细的设计,比如说,知识简单的采用一个粗粒度的互斥锁,就会出现不理想的结果:即使增加了线程,大部分线程也在等待获取访问共享资源的互斥锁,并行变串行,系统吞吐率并没有随着线程增加而增加。

而且采用多线程开发一般引入同步原语来保护共享资源的并发访问,这也会降低系统代码的易调试性和可维护性。

单线程redis为什么这么快

1:redis的大部分操作都在内存上完成

2:redis采用了多路复用机制