高并发原因
基于内存
内存的存取速度很快单线程,省去了很多上下文的切换操作
因为基于内存的操作,CPU并不是瓶颈。Redis最有可能的瓶颈是内存大小或者网络带宽。既然CPU不是瓶颈,就没有必要设计成复杂的多线程,因此就采用了单线程的设计。多路复用
非阻塞IO使用epoll,epoll中的读、写、关闭、连接都转化成为事件,然后利用epoll的多路复用特性,不在io上浪费一点性能。
单线程的好处
不需要各种锁的性能损耗
Redis的数据结构不全是Key-Value,还有List和Hash等复杂的结构,比如在Hash添加或者删除一个对象,可能需要非常多的锁,导致同步开销大大增加。
劣势
无法发挥多核CPU性能,不过可以在单机多个Redis实例来完善