Redis事件循环

本文详细介绍了Redis的事件循环机制,包括事件循环的意义、静态结构、主流程,以及文件事件和定时事件的处理。Redis的事件驱动特性使其在单线程下也能高效处理大并发请求。文章通过对aeEventLoop结构体的分析,揭示了文件事件和时间事件的管理方式,并展示了事件循环的主要执行逻辑。
摘要由CSDN通过智能技术生成

目录

 

事件循环的意义

事件循环的静态结构

事件循环的主流程

文件事件

定时事件

多线程优化


事件循环的意义

Redis本身是一个事件驱动的程序,事件循环模块的稳定性和吞吐量其实在某种程度上决定了Redis响应各种请求的速度。事件循环模块非常精良的设计和实现也是Redis能用单线程(到6.0版本之前)抗住各种业务场景中的大并发请求的原因之一。甚至在某种程度上可以算是最重要的原因。考虑所有的CURD请求和定时任务均需要经过该模块进行分发处理

事件循环的静态结构

如图所示,事件循环模块的静态结构如上。北向API给其他模块(内部模块或外部触发的事件)提供CUD接口,分别针对文件事件和时间事件进行操作。时间事件直接通过一个链表进行事件的管理,文件事件则是通过抽象工厂模式,由四个模块提供一个aeApiPoll函数,然后通过一段宏定义的判断选择调用哪个。

#ifdef HAVE_EVPORT
#include "ae_evport.c"
#else
    #ifdef HAVE_EPOLL
    #include "ae_epoll.c"
    #else
        #ifdef HAVE_KQUEUE
        #include "ae_kqueue.c"
        #else
        #include "ae_sele
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值