redis的事件是什么

redis服务是一个事件驱动程序,服务器需要处理以下两类事件:
●文件事件(file event) :redis服务器通过套接字与客户端(或者其他redis服务器)进行连接,而文件事件就是服务器对套接字操作的抽象。
●时间事件:对定时操作的抽象

12.1 文件事件

●i/o多路复用,监听多个套接字,根据套接字目前执行的任务来为套接字关联不同的事件处理器
●被监听的套接字准备好连接accept、read、write、close等操作时,与操作相对应的文件事件就会产生。这时文件事件处理器就会调用套接字之前关联好的事件处理器 来处理这些事件。
通过多路复用i/o来实现高性能的网络通信模型

12.1.1 文件事件处理器的构成

四部分:套接字、i/o多路复用程序、文件事件分派器以及事件处理器
文件事件:对套接字操作的抽象。每当一个套接字准备好执行连接应答(accept)、写入、读取、关闭等操作时,就会产生一个文件事件。
多个文件事件并发出现时,i/o多路复用程序会将所有产生事件的套接字都放在一个队列里。上一个套接字产生的事件被处理完毕后,才会继续向文件事件分派器传送下一个套接字。
多个请求复用了一个进程,称之为多路复用

i/o多路复用程序底层实现是可以互换的。会在编译时自动选择系统中性能最高的i/o多路复用函数库来作为redis的i/o多路复用程序的底层实现。

12.1.3 事件的类型

●套接字可读(客户端对套接字执行write操作或者close操作),产生AE_READABLE事件
●可写(客户端执行read操作),套接字产生AE_WRITABLE事件
同事产生,先读后写

12.1.4 api

12.1.5 文件事件的处理器

网络通信需求
●关联应答处理器
○客户端连接服务器监听套接字时,产生ae_readable事件,引发连接应答处理器执行。实际就是服务器对客户端请求的应答
●命令处理器
○客户端连接服务器的整个过程中,服务器都会一直为客户端套接字的AE_READABLE事件关联命令请求处理器
●命令回复处理器
○负责讲服务器执行命令后得到的命令回复通过套接字返回给客户端
○什么是客户端的AE_WRITABLE事件?引发命令回复处理器执行,并执行相应的套接字写入操作。
●复制处理器
一次客户端和服务器的通信
1.客户端向服务器发送命令。服务器做的事情
a.触发连接应答处理器,对客户端的连接进行应答
b.创建客户端套接字
c.将客户端套接字的AE_READABLE事件与命令处理器进行关联
2.客户端向服务器发送命令后,客户端的套接字产生AE_READABLE事件引发命令处理器执行。服务器读取,并交给相关程序处理
3.执行命令产生相应的回复,并传送给客户端。客户端的套接字的AE_WRITABLE事件和命令回复处理器进行关联。客户端读取回复。
summary:当下的理解,文件事件是对socket套接字的操作的一种抽象,用来和处理器进行关联,执行动作并以此实现客户端和服务器的通信。但是没有讲为什么需要这个抽象,这个抽象的好处是什么,以及必要性。

12.2 时间事件

●分为周期性和定时两种
●时间事件列表通过链表实现。退化成指针
●重要的事件serverCron,干的事情
○清理过期的key
○更新统计信息
○关闭和清理连接失效的客户端
○aof和rdb持久化
○定期同步
○集群模式,定期同步和连接测试
○redis2.6 默认100ms运行一次,2.8之后可以通过redis.conf来修改(hz)

12.3 时间的调度与执行

●时间在文件事件之后执行
● 事件的处理是原子、有序的,不会出现抢占
●某事件处理事件太久,会在有需要时主动让出执行权。减少事件饥饿的可能性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值