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

0x05.为什么 Redis 设计为单线程?6.0 版本为何引入多线程?

回答重点

单线程设计原因

  1. Redis 的操作是基于内存的,其大多数操作的性能瓶颈主要不是 CPU 导致的
  2. 使用单线程模型,代码简便的同时也减少了线程上下文切换带来的性能开销
  3. Redis 在单线程的情况下,使用 I/O 多路复用模型就可以提高 Redis 的 I/O 利用率了

6.0 版本引入多线程的原因

  1. 随着数据规模的增长、请求量的增多,Redis 的执行瓶颈主要在于⽹络 I/O。引入多线程处理可以提高网络 I/O 处理速度。

扩展知识

我们所说的 Redis 单线程,主要指的是 Redis 网络 I/O 和键值对读写这些操作是由一个线程完成的。(持久化、集群等机制其实是有后台线程执行的)

不过 Redis 并不是一直都单线程的,在 4.0 之后就开始引入了多线程指令,6.0 之后便正式引入了多线程的机制,不过 这里的多线程其只是针对网络请求过程使用多线程,其对于数据读写命令的处理依旧是单线程的

为什么 Redis 前期不使用多线程的方式,等到 6.0 却又引入呢?

主要是因为我们对 Redis

相关文章:

  • 移动端适配
  • javaSE.Lambda表达式
  • 【TI MSPM0】Printf重定向学习
  • GitLab 17.x 配置 https
  • NLP 梳理02 — 标点符号和大小写
  • BUUCTF-web刷题篇(25)
  • 【Ansible自动化运维】五、ansible 的高级特性与扩展:应对复杂场景
  • 互联网三高-数据库高并发之分库分表ShardingJDBC
  • 【CVE-2024-7881】ARM CPU漏洞安全通告
  • LangChain-提示模板 (Prompt Templates)
  • 【力扣hot100题】(098)下一个排列
  • 理想汽车MindVLA自动驾驶架构核心技术梳理
  • C语言斐波那契数列的多样实现
  • Day81 | 灵神 | 快慢指针 链表的中间结点 环形链表
  • 深入理解计算机操作系统(持续更新中...)
  • [dp9_子数组] 单词拆分 | 环绕字符串中唯一的子字符串
  • ​STM32H723 iPerf 调试笔记:MemManage_Handler 问题分析与解决
  • 入门到精通,C语言十大经典程序
  • 开发一款游戏需要哪些岗位角色参与?
  • CAN协议学习笔记1
  • 俄乌直接谈判结束,乌称“毫无成果”
  • 国防部:菲方应停止一切侵权挑衅危险举动,否则只会自食苦果
  • 今年有望投产里程已近3000公里,高铁冲刺谁在“狂飙”?
  • 商人运作亿元“茅台酒庞氏骗局”,俩客户自认受害人不服“从犯”判决提申诉
  • 车载抬头显示爆发在即?业内:凭借市场和产业链优势,国内供应商实现反超
  • 《歌手2025》公布首发阵容,第一期就要淘汰一人