简介
Redis服务器是一个事件驱动的程序,主要处理两类事件:文件事件和时间事件。
文件事件
是服务器对套接字操作的抽象。
- accept
- read
- write
- close
文件事件处理器
介绍
基于Reactor模式,单线程方式运行,采用I/O多路复用来同时监听多个套接字,并根据任务的类型关联不同的事件处理器。
结构图
多路复用器:监听多个套接字。
套接字队列:使多个套接字有序的传送给分派器。
事件分派器:根据事件的类型调用对应的事件处理器。
时间事件
是服务器对定时操作的抽象。
作用:
- 清理过期键
- 更新服务器各种统计信息(时间、内存占用等)
- 关闭和清理连接失效的客户端
- ......
时间事件处理器
服务器将所有的时间事件放在一个无序链表中,时间事件处理器运行时,遍历整个链表,查找所有已到达的时间事件,并调用相应的事件处理器。
运行流程
从事件处理的角度看,Redis的运行流程如下: