欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > 【学习笔记】Redis学习笔记——第12章 事件

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

2025/9/15 6:58:26 来源:https://blog.csdn.net/Lchen_kk/article/details/140403559  浏览:    关键词:【学习笔记】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>会先处理文件事件,处理完之后处理时间事件,一般情况下时间事件的处理都会比预设时间晚一些。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词