关于redis:Redis-事件

34次阅读

共计 1041 个字符,预计需要花费 3 分钟才能阅读完成。

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)集群模式下进行定期同步和连贯测试

正文完
 0