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

Redis的单线程和多线程

Redis的单线程和多线程

      • Redis单线程的原因
        • 避免锁竞争
        • 内存操作速度极快
        • 利用I/O多路复用提高并发
        • 简化实现,提示稳定性
      • Redis的多线程
        • 为啥说Redis是单线程?
        • Redis是纯单线程?
      • 多线程I/O?

Redis单线程的原因

避免锁竞争
  • 如果是多线程同时读取内存数据结构,就需要添加锁,会带来复杂的控制。
  • 单线程串行执行命令,天然避免了数据竞争,保证了数据一致性执行的可预测性
内存操作速度极快
  • Redis 的数据都存储在内存中,内存的读写速度十分快,远远高于磁盘。
  • 在这种场景下,CPU不是瓶颈,反而网络I/O才是主要开销,所以多线程意义不大。
利用I/O多路复用提高并发
  • Redis使用epoll/kpueue这样的I/O多路复用机制,使得单线程也能同时管理成千上万的客户端连接。
简化实现,提示稳定性
  • 单线程意味着代码逻辑简单,不需要复杂的并发,极大的提高了Redis的可靠性和维护性。

Redis的多线程

为啥说Redis是单线程?
  • 核心网络I/O和执行命令是单线程的,即处理客户端请求,解析命令,读写数据是单线程。
  • Redis依靠内存操作+高效的I/O多路复用,即使是单线程,也能支持高并发。
Redis是纯单线程?

不是的,Redis在后台会用多线程:

  • 异步持久化:RDB快照、AOF重写会由子进程/线程完成。
  • 集群数据同步(主从复制的网络传输)
  • 异步删除大对象

多线程I/O?

Redis 6.0 的执行流程大致是:

  1. 多线程 负责接收客户端请求(read socket)、解析命令数据包;
  2. 单线程 负责执行命令(操作内存数据结构);
  3. 多线程 把执行结果写回给客户端(write socket)。
    所以:
    👉 命令执行仍然是单线程的,只是网络收发用多线程并行,提高吞吐。
    Redis 6.0 是“单线程命令 + 多线程 I/O”,属于混合模式
http://www.dtcms.com/a/350472.html

相关文章:

  • Linux_用 `ps` 按进程名过滤线程,以及用 `pkill` 按进程名安全杀进程
  • 记一次RocketMQ消息堆积
  • (二十二)深入了解AVFoundation-编辑:视频变速功能-实战在Demo中实现视频变速
  • 数字人视频创作革命!开源免费无时限InfiniteTalk ,数字人图片 + 音频一键生成无限长视频
  • ADC-工业信号采集卡-K004规格书
  • 智能电视MaxHub恢复系统
  • 【第十章】Python 文件操作深度解析:从底层逻辑到多场景实战​
  • Flink 滑动窗口实战:从 KeyedProcessFunction 到 AggregateFunction WindowFunction 的完整旅程
  • vi/vim 查找字符串
  • h5和微信小程序查看pdf文件
  • 实验1 第一个微信小程序
  • Linux学习-TCP网络协议(补充)
  • 贝叶斯方法和朴素贝叶斯算法
  • tcpdump学习
  • 20250825的学习笔记
  • 2025年09月计算机二级Java选择题每日一练——第七期
  • 配置单区域 OSPF
  • 集群与集群概念
  • 自动修改excel 自动统计文件名称插入 excel辅助工具
  • 升级openssh后ORACLE RAC EM 安装失败处理
  • 【机器学习入门】1.2 初识机器学习:从数据到智能的认知之旅
  • C#_性能优化高级话题
  • MySQL数据备份与恢复全攻略
  • 10-应用调试与性能优化
  • 嵌入式与机器视觉的交叉点:构建智能化设备的实时视频通路
  • [pilot智驾系统] 控制守护进程(controlsd) | 纵向横向 | 比例-积分-微分(PID)
  • AR技术赋能农业机械智能运维
  • imx586手册和相机寄存器部分解读
  • 钉钉推出下一代AI办公应用形态:钉钉ONE
  • 智谱多模态系列:GLM-4.5V 环境配置与本地部署