目录
91.Redis 6.0之前为什么一直不用多线程?
官方曾做过类似问题的回复:使用Redis时,几乎不存在CPU成为瓶颈的情况,Redis主要受限于内存和网络。例如一个普通的Linux系统上,Redis通过使用pipelining每秒可以处理100万个请求,所以如果应用程序主要使用o(N)或者 o(log(N))的命令,它几乎不会占用太多CPU。
使用了单线程后,可维护性高。多线程模型虽然在某些方面表现优异,但是它却引入程序执行顺序的不确定性,带来了并发读写的一些列问题,增加了系统复杂度,同时可能存在线程切换,甚至加锁解锁,死锁造成的性能损耗。Redis通过AE事件模型以及IO多路复用等技术,处理性能非常高,因此没有必要使用多线程。单线程机制使得Redis内部实现复杂度大大降低,Hash的惰性Rehash,Lpush等等“线程不安全”的命令都可以无锁进行。
92.Redis 6.0为什么要引入多线程呢?
Redis将所有的数据放在内存中,内存的响应时长大约为100纳秒,对于小数据包,Redis服务器可以处理80000到100000QPS,这也是Redis处理的极限了&#x