Redis为什么是单线程的,Redis线程模型
- Redis内部使用了文件事件处理器file event handle,这个文件事件处理器是单线程的,所以Redis被称为单线程的模型。它采用I/O多路复用机制监听多个socket,多个socket可能会并发产生不同的操作,每个操作对应不同的文件事件,IO多路复用机制将socket产生的事件放入一个队列中,事件分派器每次从队列中取出一个事件,把该事件交给对应的事件处理器进行处理。
文件事件处理器的结构包含4个部分:
- 多个socket
- IO多路复用程序
- 文件事件分派器
- 事件处理器
- 连接应答处理器
- 命令请求处理器
- 命令回复处理器
Redis为什么快?
纯内存操作,基于非阻塞IO多路复用机制,单线程避免了线程切换的开销
- redis采用非阻塞的IO多路复用机制监听多个socket,将socket产生的事件放入一个队列中(非阻塞IO多路复用效率很高),事件分派器每次从队列中取出一个事件,把该事件交给对应的事件处理器进行处理(事件处理器是基于纯内存来操作的,效率非常高,处理一个事件只需要几微秒)。
- redis是单线程的,避免了线程切换的开销。