Redis与Reactor
了解了Reactor模式,那么Redis中又是怎么使用Reactor模式的呢?
首先,Redis服务器中有两类事件,文件事件和时间事件
§ 文件事件(file event):Redis客户端通过socket与Redis服务器连接,而文件事件就是服务器对套接字操作的抽象。例如:客户端发了一个GET命令请求,对于Redis服务器来说就是一个文件事件
§ 时间事件(time event):服务器定时或周期性执行的事件例如,定期执行RDB持久化
在这里我们主要关注Redis处理文件事件的模型参考Redis的设计与实现,Redis的文件事件处理模型是这样的:

在这个模型中,Redis服务器用主线程执行I/O多路复用程序文件事件分派器以及事件处理器而且,尽管多个文件事件可能会并发出现,Redis服务器是顺序处理各个文件事件的
总结:客户端通过套接字与服务端进行链接,redis会将每个客户端套接字关联到一个指定队列,客户端的指令通过队列排队执行,服务器基于reactor调用事件函数监听套接字,循环检查套接字的状态,当套接字被激活,则调用时间分派器分派事件,通知用户处理事件。
网友评论