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

【每日八股】复习 Redis Day4:线程模型

文章目录

  • 复习 Redis Day4:线程模型
    • 介绍一下 Redis 的线程模型
      • 核心线程模型(Redis 6.0 之前)
      • Redis 6.0+ 的多线程改进
      • Redis 真的是单线程吗?
      • Redis 的线程模型剖析

上一篇 Redis 的应用我今天才完成,因此明天一并复习 Redis 的应用和线程模型,今天我们直接学习 Redis 线程模型。

复习 Redis Day4:线程模型

在这里插入图片描述

介绍一下 Redis 的线程模型

Redis 的线程模式是其高性能的核心设计之一,其核心思想是「单线程处理命令 + 多线程辅助执行特定任务」。在 Redis 6.0 之前,单线程是 Redis 的核心线程模型,在 Redis 6.0 之后引入了多线程进行辅助。

核心线程模型(Redis 6.0 之前)

1. 单线程处理所有命令
主线程职责

  • 接收客户端请求(网络 I/O);
  • 解析命令、执行数据操作(如读写内存);
  • 返回响应结果。

单线程优势

  • 避免锁竞争:无需处理多线程并发问题;
  • 顺序执行:所有命令顺序执行,天然避免竞态条件;
  • 高效内存访问:单线程可充分利用 CPU 缓存局部性;

2. 多线程辅助任务

  • 后台持久化:RDB 快照与 AOF 重写启用子进程来完成;
  • 异步删除大 key:通过 UNLINK 命令(非阻塞删除)触发后台线程清理。

Redis 6.0+ 的多线程改进

Redis 6.0 引入了「多线程网络 I/O」,但命令执行仍然为单线程,其核心改进如下:
1. 多线程网络 I/O

  • 主线程:负责监听和分发客户端连接请求
  • I/O 线程池:负责处理 socket 读写(解析请求和发送响应)。默认关闭,需要通过配置 io-threads N 启用。命令的执行仍然由主线程单线程处理,保证操作的原子性
  • 性能提升:高并发场景下,网络 I/O 多线程可显著提升吞吐量。

2. 典型工作流

  1. 主线程接收新的连接请求,将连接的 Socket 分发给 I/O 线程;
  2. I/O 线程读取请求并解析命令,将命令放入队列;
  3. 主线程从队列拉取命令,单线程执行并生成响应;
  4. I/O 线程将响应写回客户端。

Redis 真的是单线程吗?

这个问题我把它当作一个「子问题」放在 Redis 线程模型简述之下。Redis 在执行命令时确实是单线程,在 Redis 6.0 之后引入的多线程也只是为了并发地处理多路网络 I/O 请求,在执行命令时仍然是单线程。

Redis 的线程模型剖析

Redis 内部使用一个「文件事件处理器(File Event Handler)」,它是单线程的,所以 Redis 才被称作单线程模型。文件事件处理器采用 IO 多路复用机制监听多个 socket,将产生事件的 socket 压入内存队列中,事件分派器根据 socket 上的事件来选的对应的事件处理器进行处理。

文件事件处理器的结构如下:

  • 多个 socket;
  • IO 多路复用;
  • 文件事件分派器;
  • 事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)。
http://www.xdnf.cn/news/233731.html

相关文章:

  • NLP 分词技术学习
  • 【Dify系列教程重置精品版】第四章:实现Dify的 hello world
  • ISO 26262认证步骤
  • 【Java面试笔记:进阶】30.Java程序运行在Docker等容器环境有哪些新问题?
  • 楼宇智能化三、五章【期末复习】
  • 芯知识|小体积语音芯片方案WTV/WT2003H声音播放ic应用解析
  • 楼宇智能化四章【期末复习】
  • (eNSP)Smart Link配置实验
  • MicroPython for esp32s3开发HX711称重模块指南
  • rk3568 A/B系统 OAT升级 实践
  • 全面了解CSS语法 ! ! !
  • 聊一聊接口自动化测试断言处理策略
  • 用户意图驱动:GEO优化策略之内容精准匹配
  • PID中低通滤波算法的详细讲解
  • 消防岗位技能竞赛流程方案策划
  • verilog_testbench技巧
  • 逻辑回归之参数选择:从理论到实践
  • [FPGA VIDEO IP] VCU
  • Allegro23.1新功能之新型via structure创建方法操作指导
  • 20250430在ubuntu14.04.6系统上完成编译NanoPi NEO开发板的FriendlyCore系统【严重不推荐,属于没苦硬吃】
  • 两向量平行公式、向量与平面平行公式、两平面平行公式;两向量垂直公式、向量与平面垂直公式、两平面垂直公式
  • 2025年数字创意设计与图像处理国际会议 (DCDIP 2025)
  • 一种导弹追踪算法的MATLAB仿真实现
  • HTML5 新增的主要标签整理
  • 10. 你需了解的原生测试框架Unittest断言的使用
  • 开源项目[Heygem]可商用的本地运行AI数字人!支持离线运行、本地API接口调用(喂饭级安装教程)
  • ‌连续流型液氮恒温器核心特点解析
  • 望获实时Linux系统荣获人形机器人技术突破奖
  • 【Token系列】14|Prompt不是文本,是token结构工程
  • Linux远程管理