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

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.dtcms.com/a/81124.html

相关文章:

  • ASP.NET Core 使用 MongoDB
  • Git Flow 分支管理策略
  • LeetCode算法题(Go语言实现)_01
  • GR00T N1——英伟达开源的通用人形VLA:类似Helix的快与慢双系统,且可类似ViLLA利用海量的无标注视频做训练
  • Docker和Dify学习笔记
  • c++简单实现redis
  • 使用LLaMA Factory微调导出模型,并用ollama运行,用open webui使用该模型
  • 基于javaweb的SpringBoot成绩管理系统设计与实现(源码+文档+部署讲解)
  • 优化广告投放算法
  • Unity Shader编程】之渲染流程之深度及pass详解
  • Umi-OCR- OCR 文字识别工具,支持截图、批量图片排版解析
  • Oracle 19C reverse反向索引测试
  • 安防监控视频平台EasyNVR级联视频上云系统EasyNVS出现“Login error”报错的原因排查
  • AI对话框实现
  • Workerman5.0如何实现一对一聊天
  • 实体机安装linux视频教程。windows和ubuntu共存。启动时选择切换引导系统。
  • 两个常用的用于读写和操作DXF文件C#库:netDxf 和 DXF.NET
  • Redis命令详解--集合
  • 服务器——报错解决:移动文件时,bash: /usr/bin/mv: Argument list too long
  • [密码学实战]Java实现抗量子Kyber512与Dilithium2算法及详解
  • Facebook 如何影响元宇宙的发展趋势
  • 连接 kafka0.8.1.1 java
  • 使用HAI来打通DeepSeek的任督二脉
  • Python简单爬虫实践案例
  • 基于Rockylinux9.5(LTS-SP4)安装MySQL Community Server 9.2.0
  • 侯捷 C++ 课程学习笔记:从对象生命周期谈C++内存管理范式演进——侯捷C++课程学习启示录
  • Transformer原理
  • 数据结构篇——二叉树的存储与遍历
  • libnvdla_compiler.so: cannot open shared object file: No such file or directory
  • 在LwIP中,`tcp_recved()`、`tcp_sndbuf()` 和 `tcp_write()`三个函数详细用法及示例