redis事件机制

在这里插入图片描述
redis服务器是一个由事件驱动(死循环)的程序,它总共就干两件事:

  1. 文件事件:利用I/O复用机制,监听Socket等文件描述符发生的事件,如网络请求
  2. 时间事件:定时触发的事件,负责完成redis内部定时任务,如生成RDB文件、清除过期事件

redis事件api

  1. aeApiCreate:初始化I/O复用机制上下文环境

  2. aeApiAddEvent、aeApiDelEvent:增加或删除一个监听对象

  3. aeApiPoll:阻塞进程,等待事件就绪或给定事件到期

  4. aeEventLoop:redis事件循环器,负责管理事件

  5. aeFileEvent:存储一个文件描述符已注册的文件事件

  6. aeTimeEvent:存储一个时间事件的信息

  7. redis启动时创建的事件

    1. 初始化aeEventLoop属性
    2. aeApiCreate由I/O复用层实现,并初始化具体的I/O复用机制执行的上下文环境
  8. 监听TCP Socket,并指定函数处理

    1. 如果超出eventLoop.setsize限制,则返回错误
    2. aeApiAddEvent函数由I/O复用层实现,调用I/O复用函数添加监听事件对象
    3. 初始化aeFileEvent属性
  9. redis定时任务

    1. 初始化aeTimeEvent属性,计算下一次时间事件执行事件
    2. 头插到eventLoop.timeEventHead链表
  10. 事件循环器的运行

    1. 阻塞进程,等待文件事件就绪或时间事件到达执行事件
    2. 按规则计算进程最大阻塞时间
      1. 查找最先执行的时间事件,若有,则用该时间减去当前时间
      2. 检查是否AE_DONT_WAIT标志,若无则一直阻塞,若有,则不阻塞,轮询系统是否有就绪事件
    3. 进程阻塞前,执行beforeSleep函数
    4. aeApiPoll负责阻塞进程,直到有文件事件就绪或时间到期
    5. 进程阻塞后,执行afterSleep函数
    6. aeApiPoll返回已就绪的文件事件数量并处理
    7. 通常redis会优先处理read事件再处理write事件,以方便服务器尽快处理请求返回结果给客户端。aeApiAddEvent如果设置了优先处理write属性,则会优先处理write事件。
    8. 处理时间事件
  11. 处理时间事件

    1. 判断上一次执行事件的时间是否比当前时间大?若是就说明系统时间有问题,则将所有时间事件过期时间置为0提前执行,提前执行危害小于延后执行.
    2. 遍历时间事件
    3. 若事件已删除,则将其从链表中删除
    4. 若时间事件已经到了执行时间,则删除
    5. 处理下一个时间事件

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

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

相关文章

智能语音识别技术在无人驾驶领域的应用案例

随着无人驾驶技术的进步与发展,越来越多的企业、创业者注意到无人驾驶领域潜藏的巨大市场经济价值,越来越多的企业和创业者进入无人驾驶领域,以近期业内关注的萝卜快跑为例,其在武汉地区的成功推广与落地预示着无人驾驶在网约车领…

基于价值流DevSecOps效能案例分享

背景 数字经济时代,企业数字化转型加速,软件业务收入目标设定,产业基础保障水平提升。DevSecOps: 作为解决交付能力挑战的方法,强调开发(Dev)、安全(Sec)、运维(Ops&…

水仙花语:花中情诗,心灵低语

一、水仙花语的丰富内涵 水仙花的花语丰富多样,其中“纯洁”是其最为显著的象征之一。水仙花洁白无瑕的花瓣,宛如纯洁无暇的心灵,给人以清新、高雅之感。这种纯洁不仅体现在花朵的外观上,更蕴含着一种纯净、美好的精神内涵&#x…

UE虚幻引擎可以云渲染吗?应用趋势与挑战了解

虚幻云渲染技术是基于虚幻引擎的云端渲染技术,将虚幻引擎的渲染计算任务通过云计算的方式进行处理和渲染、并将渲染结果传输到终端设备上进行展示。虚幻引擎云渲染技术在近年来得到了迅猛的发展,并在各个领域得到了广泛的应用,包括游戏、电影…

base SAS programming学习笔记(date和time格式)

1.MMDDYYw.或者MMDDYYYYw. mm表示月份,dd表示日期,yyyy表示年份可以是2位数也可以是4位数;数据可以是空格或“/”或“-”连接,w表示宽度包括连接符号的宽度。举例如下: 2.DATEw. 格式如下:DDMMMYYw.或者DDM…

WPF APP生命周期和全局异常捕获

应用启动事件与启动参数 属性查找 选择想要控件的事件,可以在控件上鼠标右击选择属性,在右上角点击闪电符号即可看到这个控件的所有事件: APP.Run()启动方法: 打开项目中这个文件: ".....\XH.EventLesson\obj…

LabVIEW多协议智能流水线控制与监控系统

在自动化流水线系统,实现对流水线传送带、机械臂、报警系统、扫码机、喷码机等设备的高效控制和实时监控。该系统需要支持多种通信协议,包括UDP、串口、ModbusTCP、HTTP、以及MQTT协议,以确保各个设备间的无缝连接和数据交换。 系统架构与模…

论文阅读-Transformer Layers as Painters

1. 摘要 尽管大语言模型现在已经被广泛的应用于各种任务,但是目前对其并没有一个很好的认知。为了弄清楚删除和重组预训练模型不同层的影响,本文设计了一系列的实验。通过实验表明,预训练语言模型中的lower和final layers与中间层分布不一致…

线程的退出

方式1 pthread_exit Void pthread_exit (void *retval) 功能: 结束调用的线程 参数: retval //退出状态值 //需要传的是,退出状态值的地址 注意: 1.pthread_exit 本身表示结束线程 如果用在main函数中 表示结束主线程…

【MySQL进阶】事务、存储引擎、索引、SQL优化、锁

一、事务 1.概念 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向 系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 例子:转账,要求扣钱和进账…

渗透实战——为喜欢的游戏“排忧解难”

本文仅用于技术研究学习,请遵守相关法律,禁止使用本文所提及的相关技术开展非法攻击行为,由于传播、利用本文所提供的信息而造成任何不良后果及损失,与本账号及作者无关。 资料查询来源- 安全社区与AI模型结合探索【文末申请免费…

autoware中ROS2学习笔记

文章目录 一、学习资料:1.1、说明1.2、Autoware Documentation1.3、Autoware Universe Documentation1.4、总结 二、概述三、ros2--节点组件什么是组件容器组件的实现原理可组合节点--节点组件什么是节点组件为什么需要可组合节点创建可组合节点时构造函数为什么需要…

三级_网络技术_27_计算机网络环境及应用系统的安装与调试

1.对于频繁改变位置并使用DHCP获取PP地址的DNS客户端,为减少对其资源记录的手动管理,可采取的措施是()。 允许动态更新 使用反向查找区域 增加别名记录 设置较小的生存时间 2.下列Windows 2003系统命令中,可以清空DNS缓存(DNScache)的是…

svn文件定时全量备份

在win11操作系统中,使用定时任务脚本的方式实现对SVN文件的定时备份 SVN备份脚本 1 创建脚本simpleBackup.bat 该脚本主要用于实现备份过程的信息展示 echo 正在备份版本库%1...... md %BACKUP_DIRECTORY%\%2 %SVN_HOME%\bin\svnadmin hotcopy %1 %BACKUP_D…

mongodb连表查询,postman使用

要实现与SQL类似的查询,你需要使用聚合框架(Aggregation Framework) SELECT b.name, a.* FROM user a LEFT JOIN order b ON a.id b.id WHERE b.name LIKE %acd%; 从MongoDB 3.2版本开始,引入了聚合框架中的$lookup阶段&#xf…

AI人工智能 卷积神经网络(CNN)

AI人工智能 卷积神经网络(CNN) 卷积神经网络与普通神经网络相同,因为它们也由具有可学习的权重和偏差的神经元组成。 普通的神经网络忽略了输入数据的结构,所有的数据在送入网络之前都被转换为一维数组。 该过程适合常规数据&…

【Java日志系列】Log4j日志框架

目录 前言 一、Log4j简介 二、Log4j组件介绍 1. Loggers 2. Appenders 3. Layouts 三、快速入门 1. 入门代码 2. 日志级别 四、配置文件的使用 五、自定义日志输出格式 六、配置不同的Appender 1. 输出到文件 2. 输出到数据库 七、自定义Logger配置 总结 前言…

超简单理解LSTM和GRU模型

目录 参考资料 RNN在反向传播时容易遭受梯度消失的问题,而梯度是用于更新神经网络权重的关键因子,梯度消失描述的是梯度在时间序列反向传播中逐渐减小的情况。 若梯度过小,它对于网络的学习贡献甚微。结果是,在RNN中,梯…

unity游戏开发003:深入理解Unity中的坐标系

Unity游戏开发 “好读书,不求甚解;每有会意,便欣然忘食。” 本文目录: Unity游戏开发 Unity游戏开发深入理解Unity中的坐标系前言1. 坐标轴2. 左手坐标系3. 世界坐标系 vs. 局部坐标系4. 坐标变换5. 注意事项 总结 深入理解Unity中…

基于STM32开发的智能家居温控系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 家庭智能温控办公室环境监测常见问题及解决方案 常见问题解决方案结论 1. 引言 智能家居温控系统通过整合温度传感器、湿度传感器、风扇和加热器等硬件&#xf…