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.mzph.cn/bicheng/73878.shtml

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

相关文章

C#的简单工厂模式、工厂方法模式、抽象工厂模式

工厂模式是一种创建型设计模式,主要将对象的创建和使用分离,使得系统更加灵活和可维护。常见的工厂模式有简单工厂模式、工厂方法模式和抽象工厂模式,以下是 C# 实现的三个案例: 简单工厂模式 简单工厂模式通过一个工厂类来创建…

python基础8 单元测试

通过前面的7个章节,作者学习了python的各项基础知识,也学习了python的编译和执行。但在实际环境上,我们需要验证我们的代码功能符合我们的设计预期,所以需要结合python的单元测试类,编写单元测试代码。 Python有一个内…

算法刷题力扣

先把大写的字母变成小写的&#xff0c;用大写字母32即可变为小写字母。 写循环跳过字符。 然后判断是否相等即可。具体代码如下&#xff1a; class Solution { public: bool isPalindrome(string s) { int sizes.size(); int begin0; int ends.size()-1; for(int i0;i<s…

allure下载安装及配置

这里写目录标题 一、JDK下载安装及配置二、allure下载三、allure安装四、allure环境变量配置五、allure验证是否安装成功 一、JDK下载安装及配置 allure 是一个java测试报告框架。所以要基于JDK环境。 JDK下载与安装及配置&#xff1a;https://blog.csdn.net/qq_24741027/arti…

linux之 内存管理(1)-armv8 内核启动页表建立过程

一、内核启动时&#xff0c;页表映射有哪些&#xff1f; Linux初始化过程&#xff0c;会依次建立如下页表映射&#xff1a; 1.恒等映射&#xff1a;页表基地址idmap_pg_dir; 2.粗粒度内核镜像映射&#xff1a;页表基地址init_pg_dir; 3.fixmap映射&#xff1a;页表基地址为…

【面试问题】Java 接口与抽象类的区别

引言 在 Java 面向对象编程中&#xff0c;接口&#xff08;Interface&#xff09;和抽象类&#xff08;Abstract Class&#xff09;是两个重要的抽象工具。它们都能定义未实现的方法&#xff0c;但设计目标和使用场景截然不同。本文将通过语法、特性和实际案例&#xff0c;深入…

【资料分享】全志科技T113-i全国产(1.2GHz双核A7 RISC-V)工业核心板规格书

核心板简介 创龙科技SOM-TLT113 是一款基于全志科技T113-i 双核ARM Cortex-A7 玄铁C906 RISC-V HiFi4 DSP 异构多核处理器设计的全国产工业核心板&#xff0c;ARM Cortex-A7 处理单元主频高达1.2GHz。核心板 CPU、ROM、RAM、电源、晶振等所有元器件均采用国产工业级方案&…

R语言高效数据处理-自定义格式EXCEL数据输出

注&#xff1a;以下代码均为实际数据处理中的笔记摘录&#xff0c;所以很零散&#xff0c; 将就看吧&#xff0c;这一篇只是代表着我还在&#xff0c;所以可能用处不大&#xff0c;这一段时间都很煎熬&#xff01; 在实际数据处理中为了提升效率&#xff0c;将Excel报表交付给…

LeetCode 30 —— 30.串联所有单词的子串

题目&#xff1a; 给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。 注意子串要与 words 中的单词完全匹配&#xff0c;中间不能有其他字符&#xff0c;但不需要考虑 words 中单词串联的顺序。 示例 1&#xff…

《算法笔记》9.2小节——数据结构专题(2)->二叉树的遍历 问题 A: 复原二叉树(同问题 C: 二叉树遍历)

题目描述 小明在做数据结构的作业&#xff0c;其中一题是给你一棵二叉树的前序遍历和中序遍历结果&#xff0c;要求你写出这棵二叉树的后序遍历结果。 输入 输入包含多组测试数据。每组输入包含两个字符串&#xff0c;分别表示二叉树的前序遍历和中序遍历结果。每个字符串由…

SpringBoot-2整合MyBatis以及基本的使用方法

目录 1.引入依赖 2.数据库表的创建 3.数据源的配置 4.编写pojo类 5.编写controller类 6.编写接口 7.编写接口的实现类 8.编写mapper 1.引入依赖 在pom.xml引入依赖 <!-- mysql--><dependency><groupId>com.mysql</groupId><artifac…

Unity Shader Graph高级节点逻辑设计:程序化噪声生成技术详解

一、程序化噪声的核心价值 程序化噪声生成是Shader开发中的关键核心技术&#xff0c;通过数学算法直接生成纹理信息&#xff0c;相较于传统位图纹理具有以下优势&#xff1a; 无限分辨率&#xff1a;可动态适应任意显示精度 参数化控制&#xff1a;实时调整噪声频率、振幅等属…

[蓝桥杯 2023 省 B] 飞机降落(不会dfs的看过来)

[蓝桥杯 2023 省 B] 飞机降落 题目描述 N N N 架飞机准备降落到某个只有一条跑道的机场。其中第 i i i 架飞机在 T i T_{i} Ti​ 时刻到达机场上空&#xff0c;到达时它的剩余油料还可以继续盘旋 D i D_{i} Di​ 个单位时间&#xff0c;即它最早可以于 T i T_{i} Ti​ 时刻…

英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析

【完整版】3月19日&#xff0c;黄仁勋Nvidia GTC 2025 主题演讲&#xff5c;英伟达 英伟达GTC 2025大会产品全景剖析与未来路线深度洞察分析 一、引言 1.1 分析内容 本研究主要采用了文献研究法、数据分析以及专家观点引用相结合的方法。在文献研究方面&#xff0c;广泛收集了…

强化学习 - PPO控制无人机

PPO&#xff08;Proximal Policy Optimization&#xff0c;近端策略优化&#xff09;是一种强化学习算法&#xff0c;用于训练智能体&#xff08;无人机&#xff09;如何在环境中做出决策。它本质上是 策略梯度&#xff08;Policy Gradient&#xff09;方法 的一种改进&#xf…

YOLO11报错:AttributeError: module ‘torch‘ has no attribute ‘OutOfMemoryError‘

事情是这样的&#xff1a;前几天YOLO11的代码还是可以训练的&#xff0c;昨天训练了一天&#xff0c;今天换模型就报这个错。 AttributeError: module torch has no attribute OutOfMemoryError我查了一下&#xff1a;YOLO11官方代码issues里面也有人有同样的问题&#xff0c;…

Prometheus使用

介绍&#xff1a;Prometheus 是一个开源的 监控与告警系统&#xff0c;主要用于采集和存储时间序列数据&#xff08;Time Series Data&#xff09; Prometheus的自定义查询语言PromQL Metric类型 为了能够帮助用户理解和区分这些不同监控指标之间的差异&#xff0c;Prometheu…

ESG报告评级标准解读

ESG&#xff08;环境、社会、治理&#xff09;报告评级标准用于评估企业在环境、社会和公司治理方面的表现。以下是主要评级标准的解读&#xff1a; 1. 环境&#xff08;Environmental&#xff09; 碳排放&#xff1a;评估企业的温室气体排放及减排措施。 能源使用&#xff1…

清晰易懂的 PHP 安装与配置教程

初学者也能看懂的 PHP 安装与配置教程 本教程将手把手教你如何在 Windows 系统上安装 PHP&#xff0c;并配置 Composer&#xff08;PHP 的依赖管理工具&#xff09;的缓存位置&#xff0c;即使你是零基础小白&#xff0c;也能轻松完成&#xff01; 一、准备工作 操作系统&…

Zabbix监控自动化(Zabbix Mnitoring Automation)

​​​​​​zabbix监控自动化 1、自动化监控(网络发现与自动注册只能用其一) 1.1 ansible安装zabbix agent 新采购100台服务器&#xff1a; 1、安装操作系统 2、初始化操作系统 3、安装zabbix agent 1.手动部暑 2.脚本部暑(shell expect) 3.ansible 4、纳入监控 1.…