深入了解Redis【十二】Reactor事件模型在Redis中的应用
引言
Redis基于Reactor模式开发了自己的网路事件处理器,称为文件事件处理器,其使用I/O多路复用,同时监听多个套接字,根据套接字执行的任务来为套接字关联不同的事件处理器。
文件事件处理器以单线程运行,Redis服务器中的其他模块也是单线程方式运行。
1、Redis中的Reactor体现
Redis使用了一个称为“A simple event-driven programming library”的自制异步事件库来实现Reactor模型。
1.1、构成
分为四个部分:套接字、I/O多路复用程序、文件事件派发器、事件处理器。
I/O多路复用程序会监听多个套接字,并将所有产生事件的套接字放到一个队列中,通过队列,每次一个套接字的方式向文件事件派发器传送套接字,相应的有事件处理器处理这些套接字。
当该套接字为事件所关联的事件处理器处理完毕之后,I/O多路复用程序才会继续向文件事件派发器传送下一个套接字。
1.1.1、I/O多路复用程序
redis是通过包装select\epoll\evport\kqueue这些I/O多路复用函数库实现的,程序编译时自动选择系统中性能更高的函数库作为redis I/O多路复用程序的底层实现。
1.1.2、事件处理器
有连接应答处理器、命令请求处理器、命令回复处理器。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ClawHub的技术分享!