【学习笔记】Redis学习笔记——第12章 事件

第12章 事件

Redis为事件驱动程序,通过套接字与客户端进行连接。
套接字操作抽象为文件事件。
周期性操作抽象为时间事件。

12.1 文件事件

1>使用IO多路复用同时监听多个套接字,并根据套接字任务关联不同的时间处理器。
2>当被监听的套接字准备好操作时,文件事件处理器调用之前关联的事件处理器进行处理。

12.1.1 文件事件处理器的构成

由嘶部分组成:
在这里插入图片描述

12.1.2 I/O多路复用程序的实现

使用了常见的函数库【后面得找时间好好学习一下IO多路复用的实现原理】。

12.1.3 事件的类型

1>当客户端执行连接、写操作、关闭连接时,套接字为可读事件。
2>当客户端执行读操作时,套接字为可写事件。
3>当一个套接字同时可读可写时,会先读套接字,再写套接字。

12.1.5 文件事件的处理器

1>连接应答处理器:accept客户端的connect。
2>命令请求处理器:read并执行客户端写入的请求。
3>命令回复处理器:回复命令执行结果。

12.2 时间事件

1>定时事件
2>周期事件

12.2.1 实现

将时间事件放入一个无序链表中,每次遍历来找到相应的到时事件进行执行。
(PS:因为事件少,所以遍历不影响性能,否则应使用小顶堆进行实现)

12.2.2 API

略,P157。

12.2.3 时间事件应用实例:serverCron函数

默认100毫秒执行一次:
1>更新服务器统计信息。
2>清理过期键。
3>关闭与清理连接失效客户端。
4>尝试进行AOF或RDB持久化操作。
5>如果服务器是主服务器,与从服务器进行同步。
6>对集群定期同步与连接测试。

12.3 事件的调度与执行

1>事件有序、原子的执行,不会中断及抢占。
2>会先处理文件事件,处理完之后处理时间事件,一般情况下时间事件的处理都会比预设时间晚一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值