redis服务器是典型的事件驱动系统,它的事件分为两大类:文件事件和时间事件
1、什么是事件驱动?
所谓事件驱动,简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数).当然事件不仅限于用户的操作. 事件驱动的核心自然是事件。
从事件角度说,事件驱动程序的基本结构是由一个事件收集器、一个事件发送器和一个事件处理器组成。
-
事件收集器专门负责收集所有事件,包括来自用户的(如鼠标、键盘事件等)、来自硬件的(如时钟事件等)和来自软件的(如操作系统、应用程序本身等)。
-
事件发送器负责将收集器收集到的事件分发到目标对象中。
-
事件处理器做具体的事件响应工作。
2、Redis的事件
2.1、文件事件
文件事件其实就是普通的socket的读写事件,也就是IO操作。
比如: 客户端的连接,命令请求,数据回复,连接断开等。
2.1.1、Reactor模式
Redis中采用的事件处理机制是Reactor模式,属于IO多路复用的一种常见模式。
IO多路复用指的是通过单个线程去管理多个Socket.
Reactor模式是一种为处理并发服务请求,并将请求提交到一个或多个服务处理程序的事件设计模式。
Reactor模式是通过事件来驱动的,包含了:
-
一个或多个并发的输入源(文件事件)
-
有一个服务处理类(Service Handler),也叫做事件收集器