redis源码阅读:事件处理流程及源码分析
程序员文章站
2022-05-19 16:13:45
...
本文详细介绍了redis源码的事件处理流程。
一、涉及的类图如下:
二、主要的结构体如下
/* State of an event based program */
typedef struct aeEventLoop {
int maxfd; /* highest file descriptor currently registered */
int setsize; /* max number of file descriptors tracked */
long long timeEventNextId;
time_t lastTime; /* Used to detect system clock skew */
aeFileEvent *events; /* Registered events */
aeFiredEvent *fired; /* Fired events */
aeTimeEvent *timeEventHead;
int stop;
void *apidata; /* This is used for polling API specific data */
aeBeforeSleepProc *beforesleep;
aeBeforeSleepProc *aftersleep;
} aeEventLoop;
struct redisServer {
dict *commands; /* Command table */
dict *orig_commands; /* Command table before command renaming. */
aeEventLoop *el;
typedef struct aeApiState {
int epfd;
struct epoll_event *events;
} aeApiState;
/* Global vars */
struct redisServer server; /* Server global state */
三、整个源码流程如下
1、添加事件和删除事件
static int aeApiAddEvent(aeEventLoop *eventLoop, int fd, int mask) {
aeApiState *state = eventLoop->apidata;
epoll_ctl(state->epfd,op,fd,&ee)
aeApiDelEvent(aeEventLoop *eventLoop, int fd, int delmask)
epoll_ctl(state->epfd,EPOLL_CTL_MOD,fd,&ee);
epoll_ctl(state->epfd,EPOLL_CTL_DEL,fd,&ee);
2、主函数
3 接收客户并处理客户的命令请求
4、写事件,发送消息
上一篇: JSP页面 - 学习1
下一篇: 赞美杨树的诗歌
推荐阅读
-
jQuery源码分析-10事件处理-Event-事件绑定与删除-bind/unbind+live/die+delegat/unde
-
Tomcat初始化源码流程分析(图解及源码注释) (一)
-
Tomcat启动源码流程分析(图解及源码注释) (四)
-
读懂源码系列-FileZilla Server 设计原则分析-socket 事件处理流程(4)
-
Hadoop源码学习笔记之NameNode启动流程分析一:源码环境搭建和项目模块及NameNode结构简单介绍
-
Android事件分发处理机制源码分析与知识点总结
-
Redis 6.0 源码阅读笔记(6)- ZSet 数据类型源码分析 -- TBD
-
SoundTouch音频处理库源码分析及算法提取(2)
-
彻底弄清事件分发流程之ViewGroup源码详细分析
-
redis源码阅读:事件处理流程及源码分析