1.单线程模型
- Redis 单线程指的是网络请求模块使用了一个线程,即一个线程处理所有网络请求;
- 其他模块该使用多线程,仍会使用了多个线程。
1.结构
-
多个 Socket
-
IO 多路复用程序
-
文件事件分派器
-
事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)
2.实现
- Redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 Redis 才叫做单线程的模型。
- 它采用 IO 多路复用机制同时监听多个 Socket,并把所有产生事件的socket压入一个队列中,然后有序地每次仅一个socket的方式传送给文件事件分派器,文件事件分派器接收到socket之后会根据socket产生的事件类型调用对应的事件处理器进行处理。