当前位置: 首页 > 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 多路复用;
  • 文件事件分派器;
  • 事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)。

相关文章:

  • 现代前端工具链深度解析:从包管理到构建工具的完整指南
  • 汽车免拆诊断案例 | 2015款奔驰C200L车发动机起动延迟
  • 【鸿蒙HarmonyOS】一文详解华为的服务卡片
  • 普通IT的股票交易成长史--20250430晚
  • 江西省电价新政发布!微电网源网荷储充一体化平台重塑企业能源格局!
  • 数据库与大数据技术教程资料
  • 表征(Representations)、嵌入(Embeddings)及潜空间(Latent space)
  • node爬虫包 pup-crawler,超简单易用
  • 大语言模型 06 - 从0开始训练GPT 0.25B参数量 - MiniMind 实机配置 GPT训练基本流程概念
  • 【Docker】Docker拉取部分常用中间件
  • iVX 开源战略:多维突破下的产业生态革新与未来图景
  • 记一次 MyBatis 缓存引发的问题
  • [PRO_A7] SZ501 FPGA开发板简介
  • ruoyi-plus登录菜单默认折叠
  • JCRQ1河马算法+消融实验!HO-CNN-LSTM-Attention系列四模型多变量时序预测,作者:机器学习之心
  • iview表单提交验证时,出现空值参数被过滤掉不提交的问题解决
  • JavaScript学习教程,从入门到精通,jQuery概述与简单使用(31)
  • 【android bluetooth 案例分析 03】【PTS 测试 】【PBAP/PCE/SSM/BV-10-C】
  • QT—布局管理器之QStackedLayout篇
  • Windows系统编译支持GPU的llama.cpp
  • 湖北鄂城:相继4所小学有学生腹泻呕吐,供餐企业负责人已被采取强制措施
  • 2025年“投资新余•上海行”钢铁产业“双招双引”推介会成功举行
  • “杭州六小龙”的招聘迷局
  • 君亭酒店:2024年营业收入约6.76亿元, “酒店行业传统增长模式面临巨大挑战”
  • 柳州警方通报临牌车撞倒行人:扣留涉事车辆,行人无生命危险
  • 中介在网上非法贩婴“一个孩子8.5万元”?丹阳警方介入