1、redis是纯内存操作
2、采用了非阻塞的IO多路复用
3、单线程避免了多线程频繁的上下文切换的性能损耗
因为内存操作速度非常快,cpu对于多线程之间的上下文切换需要时间,反而影响了性能,还不如单线程来得实在。
Redis为何称为是单线程模型?
因为redis是基于Reactor模式开发了网络事件处理器和文件事件处理器,它是单线程的,所以redis才叫单线程模型。
Redis的单线程模型
文件处理器的结构包含:多个socket、IO多路复用程序、文件事件分派器和事件处理器(命令处理器、命令回复处理器、连接应答处理器等)。
多个socket可能并发产生不同的事件,IO多路复用程序会监听多个socket,将socket放入一个队列中排队,每次从队列中有序、同步取出一个socket给事件分派器,事件分派器把socket分派给对应的事件处理器,等这个socket事件处理完后,再将队列里的下一个socket取出给事件分派器。
文件事件分派器会根据每个socket当前产生的事件,来选择对应的事件处理器来处理。