Redis的事件
1.事件类型
redis事件主要有两类,一个是文件事件,一个是时间事件,文件事件主要是来源于客户端的命令请求,时间事件主要来源于系统内部的处理
2.文件事件
文件事件的处理是基于Reactor模式实现的,主要分为对于读事件和写事件的处理,相关的处理器主要是三个,客户端连接时的连接应答处理器,客户端命令请求时的命令请求处理器,以及命令处理完成时的命令回复处理器。
从客户端连接到命令处理完成的整体流程可以使用下图来概括:
3.时间事件
时间事件分为定时事件和周期性事件,如果是定时事件,执行完成后会进行删除,而周期性事件在执行完成后会更新下一次到达的时间。
时间事件的主要工作包括:
a.更新服务器的各类统计信息,如时间、内存占用、数据库占用情况等
b.清理数据库中过期的键值对
c.尝试进行AOF或者RDB持久化操作
...
4.文件事件与时间事件的调度
当Redis服务启动后,会优先执行文件事件,然后查询最近的时间事件,如果没有时间事件到达,那么会继续等待文件事件的处理,等待的最大超时时间为最近的时间事件,这样即可以避免对时间事件的频繁轮询,也可以确保不会阻塞过多的时间。
进一寸有进一寸的欢喜。