Redis文件事件模型

Redis是事件驱动的程序,并基于Reactor模式开发了自己的网络事件处理器,被称之为文件处理器(File Event Handler)。
文件处理器通过I/O多路复用程序来同时监听多个Socket,并根据Socket目前执行的任务来关联不同的事件处理器。当被监听的Socket准好执行应答(accept)、读取(read)、写入(write)和关闭(close)操作时,与操作相对应的文件事件就会产生,这时文件事件处理器就会调用Socket关联的事件处理器进行事件处理。

文件处理器构成

文件处理器主要包括Socket、I/O多路复用程序、文件派发器和事件处理器。
文件处理器构成
因为I/O多路复用同时监听多个Socket,那么一定存在多个事件并发的情况。Redis通过消息队列来解决并发的问题。通过消息队列可以有序、同步的将每个socket事件分配给文件事件派发器。
文件处理器主要包括命令应答处理器、命令请求应答器和命令回复应答器

  • 命令应答处理器:为了对连接服务器的各个客户端进行应答, 服务器要为监听套接字关联连接应答处理器
  • 命令请求处理器:为了接收客户端传来的命令请求,服务器要为客户端套接字关联命令请求处理器
  • 命令回复处理器:为了向客户端返回命令的执行结果,服务器要为客户端套接字关联命令回复处理器

C/S交互过程

客户端/服务商交互流程
以一个完整的C/S通讯示例进行分析

  1. Redis服务器启动,在main函数中,通过aeMain创建文件处理器
  2. 服务器的监听Socket的AE_READABLE事件处于监听状态下,而该事件所对应的处理器为连接应答处理器
  3. 客户端发起连接请求,监听Socket产生AE_READABLE事件,触发连接应答处理器执行;
  4. 连接应答处理器对客户端连接进行应答,创建客户端Socket,将客户端Socket的AE_READABLE事件与命令请求处理器关联
  5. 客服端向服务端发送一个命令请求,客户端产生AE_READABLE事件,触发命令请求处理器执行
  6. 执行命令将产生相应命令回复,服务器将客户端Socket的 AE_WRITABLE 事件与命令回复处理器进行关联
  7. 客户端尝试读取命令回复时,客户端Socket将产生 AE_WRITABLE 事件,触发命令回复处理器
  8. 命令回复处理器命令回复全部写入到Socket后,服务器就会解除客户端Socket套接字的 AE_WRITABLE 事件与命令回复处理器之间的关联

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/175477.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GIT文件夹上面的状态(对钩或红色感叹号)不显示,解决

换了新电脑,GIT代码上传啥的都正常,但是文件中文件图标状态不显示,搜了一下已找到解决方法,实测有效。 第一步 winr,输入regedit.exe,打开注册表 第二步 找到以下路径 “ HKEY_LOCAL_MACHINE–>SOFTWA…

pytorch 笔记:KLDivLoss

1 介绍 对于具有相同形状的张量 ypred​ 和 ytrue(ypred​ 是输入,ytrue​ 是目标),定义逐点KL散度为: 为了在计算时避免下溢问题,此KLDivLoss期望输入在对数空间中。如果log_targetTrue,则目标…

AI时代:ChatGPT让程序员插上翅膀

程序员开发新模式:一本专注于帮助程序员在AI时代实现晋级、提高效率的图书。书中介绍了如何使用 ChatGPT 来完成高质量代码编写、文档编写、软件设计等各个环节,并通过实战案例展示了 ChatGPT在实际项目开发中的应用方法。 1.开发新模式:让程…

靶机DC系列 DC:1

DC:1 文章目录 DC:1信息收集端口IP信息网页信息 漏洞利用shell提权 信息收集 端口IP信息 使用arp-scan获得靶机ip 使用nmap对端口进行详细扫描 可以看到该目标机开放了三个端口 有ssh、http、rpcbind服务 其中rpcbind是拥有该漏洞可使攻击者在远程rpcbind绑定主机上分配任意…

第09章_子查询

第09章_子查询 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。 SQL 中子查询的使用大大增强了…

【POI-EXCEL-下拉框】POI导出excel下拉框数据太多导致下拉框不显示BUG修复

RT 最近在线上遇到一个很难受的BUG,我一度以为是我代码逻辑出了问题,用了Arthas定位分析之后,开始坚定了信心:大概率是POI的API有问题,比如写入数据过多。 PS:上图为正常的下拉框。但是,当下拉…

Anaconda安装Bertopic流程

前面是参考一个博主的搭建,但是我装之后还是遇到了些问题 1、先建一个虚拟环境 conda create --name BERTopic_Env python3.8 activate BERTopic_Env2、安装清华镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ con…

微信小程序之投票管理

前言 对于会议管理模块,必不可少的当然就是我们的投票管理,实现真正意义上的无纸化办公,本期博客为大家介绍会议管理模块,包括发布投票及查看各类投票的状态 所用技术点 MyBatis、SpringMVC、VentUI MyBatis和SpringMVC在博客主…

Spring Boot集成Swagger接口分类与各元素排序问题

在上一篇中我们完成使用JSR-303校验,以及利用Swagger2得到相关接口文档,这节,我们在原先的基础之上,完成Swagger中关于对各个元素之间控制前后顺序的具体配置方法。 Swagger的接口的分组 首先我们需要对Swagger中的接口也就是以…

ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑

ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑 1.Elasticsearch 产生背景 大规模数据如何检索 如:当系统数据量上了 10 亿、100 亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题&a…

52张扑克牌(Python字符串替换)

输入a~d的字母对应扑克牌黑、红、梅、方花色 1~13数字对应扑克牌点数;输出“字母数字”字符串对应的扑克牌花色和点数。 (本笔记适合熟悉Python循环和str字符串处理的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free…

智慧矿山系统中的猴车安全监测与识别

智慧矿山是近年来兴起的一种采用人工智能(AI)技术的矿山管理方式,它通过利用智能传感设备和先进算法来实现对矿山环境和设备进行监测和管理,从而提高矿山的安全性和效率。在智慧矿山的AI算法系列中,猴车不安全行为识别…

【信创】银河麒麟V10 本地部署yum数据源

1. 下载银河麒麟系统ISO镜像文件。 https://fdoc.epoint.com.cn:3366/ISO/麒麟V10/ wget https://fdoc.epoint.com.cn:3366/ISO/麒麟V10/Kylin-Server-10-SP1-Release-Build19-20210319-x86.iso 一般这个镜像文件会默认放置在/home目录下,如图: 挂载到…

宇信科技:强势行业加速融入AIGC,同时做深做细

【科技明说 | 重磅专题】 大家可能没有想到,一向对外低调行事的宇信科技,在AIGC方面2023年就已经训练出了适配金融场景的垂直模型,并应用到了各产品线上,同时结合通用大模型预研了宇信金融系统编程大模型。宇信金融系…

我用好说 AI 做二次元人设

你有没有想过自己做一部原创作品? 就像开发《星露谷物语》那样,自己把控作品的 角色、故事、载体、宣传 等方方面面,让 idea 不再只是灵光一闪。 以前是 “万事开头难”,可能第一步都举步维艰。但现在有了 AI 就不同了&#xff…

电脑频繁出现程序无响应怎么办?

在Windows系统中每个运行的应用程序都会有一个进程,而每个进程会有多个线程,就如你打开微信同时与多个人聊天,而每个线程只能同时处理一个线程。若Windows向程序传递消息时,而程序在处理其他工作未作出反应,Windows就会…

吐血整理,Jmeter接口测试-项目案例场景,直接上高速...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 场景一&#xff1…

Matlab2022b图文安装保姆级教程

注意:完成安装步骤1和步骤2之后,再去使用Matlab2022b 本次安装后的版本信息如下,64位软件,windows系统 Matlab2022a与2022b的比较 MATLAB主要用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险…

中国各城市土地利用类型(城市功能)矢量数据集(shp)

中国各城市土地利用类型(城市功能)数据集 时间:2018年 全国范围的城市用地类型数据(居住/商业/交通用地等共计11类) 分类:居住用地、商业用地、工业用地、医疗设施用地、体育文化设施用地、交通场站用地、绿地等用地类型 含城市编码、一级分类5个、二级分类11个 数据按…

省市区三级联动查询redis(通过python脚本导入数据)

最近工作有一个工作需求是实现省市区联动,点击省下拉框,选中一个省,然后再选市,最后选区,当然最重要的首先自然是数据了,没数据怎么测试接口,我数据是在 https://hxkj.vip/demo/echartsMap/ 这里…