【每日八股】复习 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.mzph.cn/diannao/81150.shtml

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

相关文章

树莓派智能摄像头实战指南:基于TensorFlow Lite的端到端AI部署

引言:嵌入式AI的革新力量 在物联网与人工智能深度融合的今天,树莓派这一信用卡大小的计算机正在成为边缘计算的核心载体。本文将手把手教你打造一款基于TensorFlow Lite的低功耗智能监控设备,通过MobileNetV2模型实现实时物体检测&#xff0…

vs2019编译occ7.9.0时,出现fatal error C1060: compiler is out of heap space

问题描述 visual studio 2019编译opencascade 7.9.0时,出现编译错误 fatal error C1060: compiler is out of heap space 解决方案 修改vs2019并行编译的线程个数,默认是12个,我改成了4个,问题解决 Tools > Project and Sol…

vue跨域问题总结笔记

目录 一、Websocket跨域问题 1.nginx配置 2.VUE CLI代理 3.env.development配置 4.nginx日志 5.解决 一、解决跨域的几种常用方法 1.Vue CLI代理 2.JSONP 3.WebSocket 4.NGINX解决跨域问题 6.Java解决跨域 二、Vue跨域问题详解 1. 什么是跨域 2. 跨域的例子 3.…

数据结构篇:线性表的另一表达—链表之单链表(下篇)

目录 1.前言 2.是否使用二级指针 3.插入/删除 3.1 pos位置前/后插入 3.2 查找函数 3.3 pos位置删除 3.4 pos位置后面删除 3.5 函数的销毁 4.断言问题 4.1 断言pphead 4.2 断言*pphead 5.三个文件的代码 5.1 头文件 5.2 具体函数实现 5.3 测试用例 1.前言 之前是讲…

完美解决react-native文件直传阿里云oss问题一

前言 通常情况下,作为前后端分离的项目来说,文件上传是最寻常的功能之一。虽然每个公司选择的文件管理云库各不相同,但实现思路基本一致。我所在公司使用阿里云oss文件管理,之前服务端做了透传,但是由于每个测试环境的…

5.运输层

5. 运输层 1. 概述 第2~4章依次介绍了计算机网络体系结构中的物理层、数据链路层和网络层,它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信然而在计算机网络中实际进行通信的真正实体,是位于通信两端主机中的…

告别手动时代!物联网软件开发让万物自动互联

清晨,智能窗帘随着阳光自动拉开;运动时,手表精准记录着健康数据;回到家,室温早已调节至最舒适状态...这些场景的实现,都离不开物联网软件开发的技术支撑。在智能家居软件开发、智能穿戴软件开发、医疗器械软…

Fiori学习专题十二:Shell Control as Container

为了让我们的app更加适应不同的设备&#xff0c;这节课我们引入shell控件作为根元素 1.修改App.view.xml&#xff0c;加入Shell控件 <mvc:ViewcontrollerName"ui5.walkthrough.controller.App"xmlns"sap.m"xmlns:mvc"sap.ui.core.mvc"displa…

AI 与高性能计算的深度融合:开启科技新纪元

在当今科技迅猛发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;与高性能计算&#xff08;HPC&#xff09;正以前所未有的态势深度融合&#xff0c;这种融合宛如一场强大的风暴&#xff0c;席卷并重塑着众多领域的格局。从科学研究的突破到商业应用的革新&#xff0c…

「Unity3D」TextMeshPro使用TMP_InputField实现,输入框高度自动扩展与收缩

先看实现效果&#xff1a; 要实现这个效果&#xff0c;有三个方面的问题需要解决&#xff1a; 第一&#xff0c;输入框的高度扩展&#xff0c;内部子元素会随着锚点&#xff0c;拉伸变形——要解决这个问题&#xff0c;需要将内部元素改变父类&#xff0c;然后增加父类高度&am…

多模态大语言模型arxiv论文略读(四十七)

AdaShield: Safeguarding Multimodal Large Language Models from Structure-based Attack via Adaptive Shield Prompting ➡️ 论文标题&#xff1a;AdaShield: Safeguarding Multimodal Large Language Models from Structure-based Attack via Adaptive Shield Prompting …

美的人形机器人即将投入实际应用

国内家电巨头美的集团近日公布了其自主研发的人形机器人的具体落地计划。根据公司披露的信息&#xff0c;这款机器人将于5月在湖北荆州的洗衣机工厂率先投入使用&#xff0c;承担设备运维、质量检测和物料搬运等工作任务。预计今年下半年&#xff0c;该机器人还将进入美的线下门…

从零开始搭建你的个人博客:使用 GitHub Pages 免费部署静态网站

&#x1f310; 从零开始搭建你的个人博客&#xff1a;使用 GitHub Pages 免费部署静态网站 在互联网时代&#xff0c;拥有一个属于自己的网站不仅是一种展示方式&#xff0c;更是一种技术能力的体现。今天我们将一步步学习如何通过 GitHub Pages 搭建一个免费的个人博客或简历…

canvas动画:点随机运动 距离内自动连接成线 鼠标移动自动吸附附近的点

思路/实现步骤 创建canvas元素 获取canvas的上下文ctx 初始化点的信息&#xff08;数量、初始坐标、移动方向、移动速度、大小、颜色&#xff09; 绘制点 绘制点之间的连线 点有规律的动起来 动画循环 鼠标移动相关逻辑 点鼠标之间连线 鼠标吸附逻辑 添加配置项 重绘…

2025年4月AI科技领域周报(4.21-4.27):大模型生态加速演进 通用AI开启产业融合新范式

2025年4月AI科技领域周报&#xff08;4.21-4.27&#xff09;&#xff1a;大模型生态加速演进 通用AI开启产业融合新范式 一、本周热点回顾1. OpenAI发布全球首款通用AI芯片「GPT-NPU」 重塑AI算力架构2. 谷歌DeepMind发布医疗AI系统「Med-Pathfinder」 实现全科室智能诊断3. 微…

【Bash】可以请您解释性地说明一下“2>1”这个语法吗?

Qwen3-235B 当然可以&#xff01;我们一步步拆解 2>&1 的含义&#xff0c;用生活化的例子来理解它&#xff1a; &#x1f9e0; 前提知识&#xff1a;三个“水流通道” 在 Linux/Unix 系统中&#xff0c;程序运行时有三种默认的“水流通道”&#xff1a; 标准输入&…

MAC如何安装多版本jdk(以8,11,17为例)

MAC如何安装多版本jdk(以8,11,17为例&#xff09;_mac安装jdk17-CSDN博客

Nginx核心

一、概述 Nginx一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】&#xff0c;同时也是一个电子邮件代理服务器。正向代理服务的是客户端&#xff08;比如VPN&#xff09;&#xff0c;反向代理服务的是服务端。Nginx是多进程的&#xff0c;有一个Master进程控制多个Worke…

综合开发-手机APP远程控制PLC1500柱灯的亮灭

要通过 ​​Unity3D​​ 开发的手机 App 控制 ​​电气柜上面的柱灯&#xff0c;需要WIFI模块作为桥梁&#xff0c;按照以下步骤实现&#xff1a; ​​1. 硬件准备&#xff08;硬件部分&#xff09;​​ ​​所需材料​​ ​​ESP32开发板​​&#xff08;如ESP32-WROOM-32&a…

五款提效工具

1. 亿可达 核心功能&#xff1a;通过“触发器动作”模式&#xff0c;实现任务自动执行&#xff08;如邮件转发、评论回复、数据同步&#xff09;。 适用场景&#xff1a;自动同步Notion项目到滴答清单生成待办事项 优势&#xff1a;节省重复操作时间&#xff0c;减少人为错误&a…