-
- 文件事件处理的构成
-
IO多路复用程序的实现
-
事件的类型
-
文件事件的处理器
-
- 连接应答处理器
-
命令请求处理器
-
命令回复处理器
-
完整的连接过程
-
时间事件
-
- 时间事件的实现
-
ServerCron函数
-
事件的调度与执行
-
- 调度规则
-
重点
在AOF那章提到过,Redis服务器是一个事件驱动的程序,由一个Loop循环不断地接收事件执行和执行时间事件
首先认识以下什么是套接字
套接字是对运输层以下的一个抽象封装,将运输层以下,包括运输层的细节全部封装起来,这样应用层传数据给下层时,就不需要关注下面的细节,只需传给套接字即可。
然后再认识以下什么是IO多路复用
一般来说,解决并发的问题会开启多个线程去执行不同的连接,但是这有一个弊端就是CPU要切换上下文,因为每个线程有自己的空间,执行不同的线程时候,CPU也要对应切换不同的上下文(所以多线程会很耗CPU)
IO多路复用是针对单线程并发的,多路是指多个连接,复用是指都是使用同一个线程,比如现在有4个客户端连接上了Redis,在Linux中一切都是文件,所以这4个连接可以当成是4个文件,假如这4个文件都没有数据,那么就会发生阻塞,等待某一个或多个文件被传输进数据,当文件有数据的时候(即要进行IO操作),该文件就会被标记,然后停止阻塞,准备进行IO,然后去轮询有标记的文件,针对进行IO操作,这样就实现了IO多路复用。
-
文件事件(file event):Redis服务器是通过套接字与客户端或别的服务器进行连接,而文件事件就是服务器套接字操作的抽象,服务器与客户端(或其他服务器)的通信会产生相应的文件事件,服务器则通过监听并处理这些事件来完成一系列操作
-
时间事件(time event):时间事件是Redis服务器一些定时执行的操作,比如前面提到的ServerCron函数,是需要在指定时间点上执行的<