redis事件机制

news2024/9/21 0:29:33

在这里插入图片描述
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.coloradmin.cn/o/2044469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MCU复位RAM会保持吗,如何实现复位时变量数据保持

在使用MCU时,通常大家默认MCU复位时RAM会被复位清零,那实际MCU复位时RAM是什么状态?如何让mcu复位时RAM保持不变呢? MCU复位有电源复位、Standby复位、内核复位、看门狗复位、引脚复位等。 其中内部会有掉电动作的复位有电源复位…

Linux知识复习第5期

目录 1、实验环境 2、日志存放 3、自定义日志采集路径 1、实验环境 hostnamectl hostname node1.zx.org # 设置主机名 vim /etc/hosts # 域名解析修改 hostname -I # 显示ip地址 2、日志存放 /var/log/messages 系统服务日志,常规…

快速MD5强碰撞生成器:fastcoll

问:可以制作两个具有相同哈希值的不同文件吗? 答:可以。 在密码学中,哈希函数将输入数据转换成固定长度的字符串。但由于输入的无限性和输出的固定性,不可避免地会有不同输入产生相同的哈希值,这就是碰撞。…

【ITK】图像分割算法:FastGrowCut详解

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享图像分割算法FastGrowCut的详细解析过程,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 目录…

单元训练09:定时器实现秒闪功能

蓝桥杯 小蜜蜂 单元训练09:定时器实现秒闪功能 #include "stc15f2k60s2.h"#define LED(x) \{ \P0 x; \P2 P2 & 0x1f | 0x80; \P2 & 0x1f; \}#define L1 0xFE; // 定义L1 …

线程锁(2)

线程的资源回收 int pthread_join(pthread_t thread, void **retval); 功能: 等待线程结束 参数: thread --- 线程tid retval --- 用来保存,退出状态值,所在空间的地址 返回值: 成功 0 失败 错误…

[240816] 【超级大牛】kovidgoyal:calibre 和 kitty 的作者 | Go 发布 1.23.0 版本

目录 【超级大牛】kovidgoyal:calibre 和 kitty 的作者calibrekitty Go 发布 1.23.0 版本Go 1.23 版本更新说明 【超级大牛】kovidgoyal:calibre 和 kitty 的作者 calibre calibre 是由 github.com/kovidgoyal 使用 C 和 Python 开发的跨平台电子书管理…

开源AI智能名片系统与高级机器学习技术的融合应用:重塑商务交流的未来

摘要:在数字化浪潮的推动下,人工智能(AI)技术,尤其是机器学习领域的快速发展,正深刻改变着各行各业的面貌。开源AI智能名片系统作为这一变革的先锋,通过集成并优化多种高级机器学习技术&#xf…

Word文档怎么批量加密保存

Word的文件批量设置密码是工作中比较常用的功能,它可以对文档进行保护,平时我们都是单个对文件进行加密,那么多个文件如何一键批量设置,下面通过一些方法,我们可以进行批量设置密码保存起来。 一、使用Word软件内置功能…

郑州市政协副主席翟政莅临中创算力开展重点企业实地调研

2024年8月13日,围绕“落实中央和省委、市委政协工作会议精神情况”郑州市政协副主席翟政一行莅临河南中创算力信息科技有限公司进行实地调研。中创算力董事长许伟威全程陪同。此次调研不仅是对中创算力在数字经济领域发展成就的肯定,更是对中创如何积极响…

《机器学习by周志华》学习笔记-决策树-03连续值与缺失值

1、连续值处理 到目前为止,我们在决策树01、02中仅讨论了基于离散属性来生成决策树,而现实任务中常会遇到连续属性,所以在本章的学习中,我们将会讨论如何在决策树学习中使用连续属性。 1.1、概念 取值范围是连续的实数值或者整数值的属性就是「连续属性」,与离散属性相对…

VSCode自动保存文件

off:关闭自动保存,这是默认选项afterDelay:会每隔若干秒保存一次OnFocusChange: 编辑器是去焦点时自动保存文件,比如说你打开了多个文件,你编辑好了A,然后切换到B文件,那么此时A文件…

信息流广告预估技术在美团外卖的实践

本文整理自美团技术沙龙第81期《美团在广告算法领域的探索及实践》(B站视频)。文章首先介绍了美团信息流广告业务以及预估技术的现状,然后重点分享了信息流广告预估在美团的具体实践,围绕决策路径、超长超宽建模和全还原建模等多个维度进行了分享&#x…

Taos 常用命令工作笔记(二)

最近测试创建一个涛思的数据库和一堆表进行测试,通过json配置文件配置字段的类型、名称等,程序通过解析json文件的配置,动态创建数据库的表。 其中表字段为驼峰结构的规则命名,创建表也是成功的,插入的测试数据也是成功…

实用性强的高安全涉密内网文件传输工具

在数字化浪潮中,数据安全和合规性成为企业和组织极为关注的焦点,特别是在处理敏感和机密信息时。高安全级别的内网文件传输工具因此变得至关重要,它们是保护数据不被未授权访问或泄露的关键技术之一。这类工具不仅需要满足严格的安全标准&…

zdpgo_gin_jwt 专为zdpgo_gin打造的JWT权限校验中间件,当需要实现基于JWT Token的权限校验的时候可以考虑使用此框架

zdpgo_gin_jwt 专为zdpgo_gin打造的JWT权限校验中间件,当需要实现基于JWT Token的权限校验的时候可以考虑使用此框架 使用教程 快速入门 package mainimport ("log""net/http""os""time"gin "github.com/zhangdap…

服务器数据恢复—IBM服务器raid5阵列硬盘出现坏道的数据恢复案例

服务器数据恢复环境&故障: 一台ibm x3850服务器,有一组由5块硬盘组建的raid5磁盘阵列,上层是Redhat Linux操作系统,部署了一个oracle数据库。 raid5阵列中2块硬盘离线,阵列崩溃。经过检测发现该raid中的热备盘未激…

html5眼镜商城模板源码

文章目录 1.设计来源1.1 主界面1.2 主界面弹框1.3 眼镜列表1.4 商品列表1.5 商品列表1.6 商城推广1.7 页面底部 2.效果和源码2.1 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 【博主推荐】:前些天发现了一个巨牛的人工智…

Python数据挖掘和机器学习工具库之orange3使用详解

概要 Orange3 是一个基于组件的 Python 数据挖掘和机器学习工具箱,适用于初学者和专家。它提供了直观的用户界面,使用户可以通过拖放的方式构建数据分析工作流。同时,Orange3 还支持脚本编写,允许用户在 Python 环境中进行更复杂的分析和建模。本文将详细介绍 Orange3 库,…

长期使用入耳式耳机有什么危害吗?开放式耳机选购入门指南

长期戴入耳式耳机听歌可能会带来以下危害: 损伤听力:长时间高分贝的声音刺激耳部,容易导致听力下降,尤其是在音量较大的情况下。 引发耳部炎症:入耳式耳机直接接触耳道,可能会阻塞耳道,导致分…