前言:
通常大家都会说redis是单线程的,这个理解其实也没错。
redis的命令处理基本上都是单线程处理的,除了个别任务会fork子进程进行处理。
分析版本:redis 3.0.7
其实redis是个多线程进程,如下图:
redis的另外两个线程的作用是什么?
另外两个线程用于一些异步操作,通过条件变量控制任务,主要用于close(2),fsync(2)的操作,
因为close(2)一个文件句柄时,如果程序是文件的最后一个拥有者,那么代表着要unlink它,相对来说会很慢,产生阻塞。