redis的事件分为两种事件:一个是文件事件,Redis基于Reactor模式开发了自己的网络事件处理器:这个处理器被称为文件事件处理器;另一个是时间事件,顾名思义,定时运行的事件和周期运行的事件。
在aeMain函数中调用了aeProcessEvents函数,它管理着所有事件的分发和调用。

aeApiPoll函数阻塞并等待所有被aeCreateFileEvent函数设置为监听状态的套接字产生文件事件,当有至少一个事件产生,或者等待超时后,函数返回。
事件概况
- initServer函数创建事件循环
server.el = aeCreateEventLoop();//创建事件循环 - initServer创建时间时间
aeCreateTimeEvent(server.el, 1, serverCron, NULL, NULL);//注册时间事件 serverCron回收一些垃圾 1毫秒后server.el事件到达,使用serverCron处理此事件 - main函数中创建服务器的最重要的文件事件,监听server.fd,当出现AE_READABLE类型事件采用acceptHandler函数处理事件
if (aeCreateFileEvent(server.el, server.fd, AE_READABLE,acceptHandler, NULL) == AE_ERR) oom("creating file event");//给服务器与接收句柄关联 - aeMain开启事件循环
主要事件的调度与处理都是在aeProcessEvents函数中进行,其中aeApiPoll堵塞,等待事件,之后处理已经到达的文件事件,再处理时间事件
本文介绍了Redis中的事件处理机制,包括文件事件和时间事件的概念。详细讲解了如何通过Redis的事件循环来创建和管理事件,以及如何利用这些事件实现网络通信和定时任务。
1510

被折叠的 条评论
为什么被折叠?



