Redis(十六),mysql索引面试题索引失效

本文详细介绍了Redis中的文件事件和时间事件。文件事件包括AE_READABLE和AE_WRITABLE,用于处理客户端的连接应答、命令请求和回复。时间事件则分为定时和周期性事件,主要用于执行如serverCron函数等任务。Redis通过无序链表存储时间事件,而文件事件基于Reactor模式实现,采用IO多路复用进行处理。事件调度由aeProcessEvents函数控制,确保两种事件的有序执行。
摘要由CSDN通过智能技术生成

当套接字发送事件时,IO多路复用程序会监听该事件,并且为套接字关联其需要的事件处理器

事件的类型

IO多路复用程序可以监听多个套接字的事件,事件包括下面的两种

  1. ae.h/AE_READABLE事件

  2. ae.h/AE_WRITABLE事件

这两类事件和套接字之间的对应关系如下

  • AE_READABLE(可读状态):当套接字产生AE_READABLE事件时,表示套接字变得可读,即服务端可以读取套接字里面的内容,即用户端那边进行了write操作、close操作或者connect操作。

  • AE_WRITEABLE(可写状态):当套接字产生AE_WRITEABLE事件时,表示套接字变得可写,即服务端可以往套接字写入内容,给用户端看,即用户端那边进行了Read操作。

IO多路复用程序允许服务器同时监听套接字的两种事件,而且如果一个套接字同时产生了两种事件,如果套接字同时出现了这两种事件时,当IO多路复用程序将套接字传给文件事件派发器时,会优先处理AE_READABLE再处理AE_WRITEABLE,即会优先进行读取套接字(读取套接字内容,往服务器写入数据),然后再往套接字写入(从服务器读取数据,写入到套接字中)

文件事件的处理器

Redis为文件事件编写了多个处理器,这些事件处理器分别用于实现不同的网络通信需求

  • 为了对连接服务器的各个客户端进行应答,服务器要为监听的套接字关联连接应答处理器

  • 为了接收客户端传来的命令请求,服务器要为客户端套接字关联命令请求处理器

  • 为了向客户端传回命令的执行结果,服务器要为客户端套接字关联命令回复处理器

  • 当主服务器和从服务器进行复制操作时,主从服务器都需要关联特别为复制功能编写的复制处理器

连接应答处理器

该处理器用于对连接服务器监听套接字的客户端进行应答(即套接字被服务器监听的客户端)。

当Redis服务器进行初始化的时候,程序会将这个连接应答处理器和服务器监听套接字的AE_READABLE事件关联起来,当有客户端用函数连接服务器监听套接字的时候(即客户端连接上服务器),该套接字就会产生AE_READABLE事件,然后经由IO多路复用程序和文件事件派发器,引发连接应答处理器执行,并执行相应的套接字应答操作。

在这里插入图片描述

命令请求处理器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值