Redis 事件

1、两类事件:

1、1: 文件事件(file event)1、2: 工夫事件(time event)

2、文件事件:

2、1: 原理:Redis服务器通过套接字与其余(客户端或其余Redis服务器)进行链接,通信时产生相应的文件事件,而服务器通过监听和解决这些事件来实现一系列网络通信操作。2、2: 重要要害思路:文件事件通过应用I/O多路复用程序监听多个socket。(Redis单线程 但高性能的重要起因)2、3: 与socket操作相干的事件产生时,文件事件处理器就会调用关联好的事件处理器来解决这些事件。2、4: 文件事件的组成:socket、I/O多路复用、文件事件分派器、事件处理器2、5:事件类型:可读事件、可写事件(优先读事件)

3、文件事件处理器

3、1: 连贯应答处理器(acceptTcpHandler)3、2: 命令申请处理器(readQueryFromClient)3、3: 命令回复处理器(sendReplyToCLient)一次残缺的客户端与服务器连贯事件:(1)客户端向服务器发送连贯申请,服务器执行连贯应答处理器(2)客户端向服务器发送命令申请,服务器执行命令申请处理器(3)服务器向客户端发送命令回复,服务器执行命令回复处理器

4、工夫事件

4、1: 工夫事件分类    (1)定时事件    (2)周期性事件4、2: 工夫事件的组成    (1)ID:惟一标识,程序递增    (2)when:毫秒unix工夫戳,记录时间事件的达到工夫    (3)timeProc:事件处理器函数4、3: 定时事件和周期性事件的辨别:    按返回值辨别,返回ae.h/AE_NOMORE为定时事件,返回非AE_NOMORE的整数为周期事件。    注:返回整数则对事件的when属性进行更新

5、事件事件的实现

5、1: 所有的工夫事件都放在一个无序链表,每当工夫事件执行器执行需遍历整个链表(性能?)注:按ID排序放,非按when属性排序放5、2:性能问题解答:在目前版本中,失常模式下的 Redis服务器只应用servercron一个工夫事件,而在benchmark模式下,服务器也只应用两个工夫事件。在这种状况下,服务器简直是将无序链表进化成一个指针来应用,所以应用无序链表来保留工夫事件,并不影响事件执行的性能。

6、工夫工夫实例:serverCron函数的作用

(1)更新服务器各类统计信息(2)清理数据库中的过期键值对(3)敞开和清理连贯生效的客户端(4)AOF 和 RDB长久化操作(5)主从服务器数据同步(6)集群模式下进行定期同步和连贯测试