redis1.2.6 事件处理

​ redis的事件分为两种事件:一个是文件事件,Redis基于Reactor模式开发了自己的网络事件处理器:这个处理器被称为文件事件处理器;另一个是时间事件,顾名思义,定时运行的事件和周期运行的事件。

​ 在aeMain函数中调用了aeProcessEvents函数,它管理着所有事件的分发和调用。

1

​ aeApiPoll函数阻塞并等待所有被aeCreateFileEvent函数设置为监听状态的套接字产生文件事件,当有至少一个事件产生,或者等待超时后,函数返回。

事件概况

  1. initServer函数创建事件循环 server.el = aeCreateEventLoop();//创建事件循环
  2. initServer创建时间时间 aeCreateTimeEvent(server.el, 1, serverCron, NULL, NULL);//注册时间事件 serverCron回收一些垃圾 1毫秒后server.el事件到达,使用serverCron处理此事件
  3. main函数中创建服务器的最重要的文件事件,监听server.fd,当出现AE_READABLE类型事件采用acceptHandler函数处理事件 if (aeCreateFileEvent(server.el, server.fd, AE_READABLE,acceptHandler, NULL) == AE_ERR) oom("creating file event");//给服务器与接收句柄关联
  4. aeMain开启事件循环
    主要事件的调度与处理都是在aeProcessEvents函数中进行,其中aeApiPoll堵塞,等待事件,之后处理已经到达的文件事件,再处理时间事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值