当前位置: 首页 > news >正文

关于Redis单线程模型以及IO多路复用的理解

IO多路复用 -> redis主线程 -> 事件队列 -> 事件处理器

在这里插入图片描述

1.IO多路复用机制的作用:

操作系统的多路复用机制(如 epoll、select)负责监听多个文件描述符(如客户端连接)上的事件。

当某个文件描述符上的事件就绪时(如客户端发送数据、可以写响应等),操作系统会将这些事件标记为就绪并通知 Redis。

通知的结果是将就绪的事件列表返回给 Redis 的主线程。

2.Redis 主线程负责将事件放入队列

主线程通过调用多路复用函数(如 epoll_wait)获取就绪的事件。

Redis 主线程将这些就绪事件处理为任务,并加入到内部的 事件队列 中,准备依次处理。

主线程不仅负责将事件放入队列,还负责按顺序从队列中取出事件并执行逻辑。

3.Redis 主线程在处理事件时依赖于 事件处理器(handler)

主线程会从事件队列里面取出事件,分发给不通过的事件处理器进行处理。

每个事件处理器都是一个函数指针,当一个事件就绪时,主线程会调用相应的处理器来完成操作。

常见的事件处理器类型包括:
读事件处理器:当客户端发送请求时,主线程会将读事件交给读取请求的处理器。
写事件处理器:当处理完请求后,主线程会将响应数据写回客户端,交给写事件的处理器。
定时事件处理器:用于周期性地执行 Redis 内部的任务,如过期键删除。

http://www.lryc.cn/news/488343.html

相关文章:

  • 学习ASP.NET Core的身份认证(基于Cookie的身份认证1)
  • 奇门遁甲中看债务时用神该怎么取?
  • Redis 集群主要有以下几种类型
  • 使用 Axios 拦截器优化 HTTP 请求与响应的实践
  • mini-lsm通关笔记Week2Day5
  • mybatis的动态sql用法之排序
  • OneToMany 和 ManyToOne
  • 《生成式 AI》课程 第3講 CODE TASK 任务3:自定义任务的机器人
  • 反转链表、链表内指定区间反转
  • Debezium系列之:Debezium3版本使用快照过程中的指标
  • 第一讲,Opencv计算机视觉基础之计算机视觉概述
  • 数据结构(双向链表——c语言实现)
  • 【新人系列】Python 入门(十一):控制结构
  • 群核科技首次公开“双核技术引擎”,发布多模态CAD大模型
  • 【AI大模型引领变革】探索AI如何重塑软件开发流程与未来趋势
  • linux 常用命令指南(存储分区、存储挂载、docker迁移)
  • 用pyspark把kafka主题数据经过etl导入另一个主题中的有关报错
  • Redis的过期删除策略和内存淘汰机制以及如何保证双写的一致性
  • 异常处理:import cv2时候报错No module named ‘numpy.core.multiarray‘
  • C++手写PCD文件
  • 优选算法(双指针)
  • 【保姆级】Mac上IDEA卡顿优化
  • python实战案例----使用 PyQt5 构建简单的 HTTP 接口测试工具
  • pytest 接口串联场景
  • Springboot项目搭建(2)-用户详细信息查询
  • Stable Diffusion的加噪和去噪详解
  • 解决 Gradle 报错:`Plugin with id ‘maven‘ not found` 在 SDK 开发中的问题
  • EMD-KPCA-Transformer多变量回归预测!分解+降维+预测!多重创新!直接写核心!
  • 前端 px、rpx、em、rem、vh、vw计量单位的区别
  • OceanBase数据库产品与工具介绍