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

Redis之单线程与多线程

redis 单线程与多线程

在这里插入图片描述

Redis是单线程,主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包含获取(socket读)、解析、执行、内容返回(socket写)等都由一个顺序串行的主线程处理,这就是所谓的“单线程”。这也是redis对外提供键值存储服务的主要流程。
在这里插入图片描述

但Redis的其他功能,比如持久化RDB、AOF、异步删除、集群数据同步等等,其实是由额外的线程执行的。Redis命令工作线程是单线程的,但是,整个Redis来说,是多线程的
Redis 3.X单线程时代但性能依旧很快的原因?
在这里插入图片描述
官网解释
在这里插入图片描述
Redis4之前一直使用单线程的原因
在这里插入图片描述

Redis单线程的烦恼??

使用惰性删除可以有效的避免redis卡顿的问题

在这里插入图片描述

对于Reids主要的性能瓶颈是内存或者网络带宽而非CPU
在这里插入图片描述
redis6与7 真正的多线程登场
在这里插入图片描述
主线程和IO线程是怎么协作完成请求处理的?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Unix网络编程中的5种IO模型
在这里插入图片描述
Linux世界一切皆文件
文件描述符
在这里插入图片描述
I/O 多路复用
一种同步的IO模型,实现一个线程监视多个文件句柄一旦某个文件句柄就绪就能够通知到对应应用程序进行相应的读写操作,没有文件句柄就绪时就会阻塞应用程序,从而释放CPU资源。
在这里插入图片描述
在这里插入图片描述
I/O 多路复用场景分析

在这里插入图片描述
I/O多路复用简易理解
在这里插入图片描述
只使用一个服务端进程可以同时处理多个套接字描述符连接
在这里插入图片描述
Redis为什么这样快?
I/O多路复用1+epoll函数使用,才是redis为什么这么快的直接原因,而不是仅仅单线程指令+redis安装在内存中。
简单说明
Redis工作线程是单线程的,但是整个Redis来说,是多线程的

主线程和IO线程是怎么协作完成请求处理的?
在这里插入图片描述
在这里插入图片描述
结论
在这里插入图片描述
Redis7默认是否开启了多线程?
如果你在实际应用中,发现Redis实例的CPU开销不大但吞吐量却没有提升,可以考虑使用Redis7的多线程机制,加速网络处理,进而提升实例的吞吐量。

在这里插入图片描述
在这里插入图片描述
总结
在这里插入图片描述

视频链接–学习地址
Redis 单线程与多线程


http://www.kler.cn/a/591196.html

相关文章:

  • 【leetcode hot 100 124】二叉树中的最大路径和
  • 【Linux网络编程】I/O模型
  • DeepSeek 3FS集群化部署临时笔记
  • 素数判定方法详解:从基础试除法到优化策略
  • TDE透明加密:重塑文件传输与网盘存储的安全新范式
  • 生信分析服务作图TCGA/GEO数据库挖掘细胞测序转录学代做指导辅导
  • Scrapy爬虫实战:动态代理破解链家反爬机制的详细步骤
  • 面试经典问题(持续更新)
  • C++编译汇编八股总结
  • 味觉传送器E-Taste:开启虚拟世界的味觉之门
  • 【NoSql】Redis
  • 护网面试题
  • HOVER:人形机器人的多功能神经网络全身控制器
  • JavaScript变量声明与DOM操作指南
  • 微信小程序面试内容整理-懒加载
  • 【c++】内存序 和 内存一致性模型
  • 质因数个数
  • Agent系列——BabyAGI调研
  • 自动化测试工具-Playwright介绍和快速实例
  • 前端面试:axios 请求的底层依赖是什么?