1.事件类型

    redis事件主要有两类,一个是文件事件,一个是时间事件,文件事件主要是来源于客户端的命令请求,时间事件主要来源于系统内部的处理

2.文件事件

    文件事件的处理是基于Reactor模式实现的,主要分为对于读事件和写事件的处理,相关的处理器主要是三个,客户端连接时的连接应答处理器,客户端命令请求时的命令请求处理器,以及命令处理完成时的命令回复处理器。

redis 数据时间戳 redis时间事件_文件事件

 

     从客户端连接到命令处理完成的整体流程可以使用下图来概括:

redis 数据时间戳 redis时间事件_客户端_02

 

3.时间事件

    时间事件分为定时事件和周期性事件,如果是定时事件,执行完成后会进行删除,而周期性事件在执行完成后会更新下一次到达的时间。

    时间事件的主要工作包括:

        a.更新服务器的各类统计信息,如时间、内存占用、数据库占用情况等

        b.清理数据库中过期的键值对

        c.尝试进行AOF或者RDB持久化操作

        ...

4.文件事件与时间事件的调度

    当Redis服务启动后,会优先执行文件事件,然后查询最近的时间事件,如果没有时间事件到达,那么会继续等待文件事件的处理,等待的最大超时时间为最近的时间事件,这样即可以避免对时间事件的频繁轮询,也可以确保不会阻塞过多的时间。

 

进一寸有进一寸的欢喜。