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

【redis】单线程 VS 多线程(入门)

【redis】单线程 VS 多线程(入门)

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 【redis】单线程 VS 多线程(入门)
  • 前言
  • 一、面试题
  • 二、redis为什么选择单线程
    • 1.单线程?多线程?
    • 2.“单线程”
    • 3.单线程时代redis3 为什么还这么快的原因
    • 4. redis4 之前一直使用单线程的原因
  • 三、==既然单线程这么好,为什么逐渐又增加了多线程特性==
    • 1.单线程也有痛点
    • 2.为什么引入多线程 删除大key时会阻塞
  • 四、redis6/7 的多线程特性和IO多路复用(入门)
    • 1.影响redis性能的三大因素
    • 2.redis的网络IO---redis的性能瓶颈
    • 3.==主线程(读写)和IO线程(客户端连接)是怎样协作完成处理请求的== `四个阶段`
    • 3.Unix网络编程中的五种IO模型
      • `IO多路复用`
        • a、FileDescriptor是什么?即文件句柄 相当于一个索引值
        • b、IO多路复用是什么?一种同步的IO模型,实现一个线程监视多个FileDescriptor
        • c、场景案例, epoll是什么?
        • 总结 IO多路复用就是 只使用一个服务器进程可以同时处理多个套接字描述符(FileDescriptor)连接
        • 最终解释:redis为什么这么快?
    • 简单说明
      • ==**1、主线程(读写操作) 和 IO线程(耗时的网络连接) 协作**== 精简版
        • 协作前:`即redis3 的单线程时代,网络连接和读写操作都是单线程`
          • 协作后:`redis6开始,新增多线程,将网络连接和读写操作分离,让读写操作串行、单线程执行,而耗时的网络连接则是通过IO多路复用+epoll函数去处理`
      • 2、小总结
  • 五、redis7 默认是否开启了多线程?
    • 1、默认不开启,如何开启?
  • 六、我还是曾经那个骚年


前言

在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、面试题

在这里插入图片描述

二、redis为什么选择单线程

1.单线程?多线程?

A:看版本,在redis3时是单线程,redis4 为部分加入了多线程,而在redis6/7 之后就是多线程
在这里插入图片描述
在这里插入图片描述

2.“单线程”

执行缓存插入的命令都是单线程的
在这里插入图片描述
在这里插入图片描述

3.单线程时代redis3 为什么还这么快的原因

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

4. redis4 之前一直使用单线程的原因

在这里插入图片描述


三、既然单线程这么好,为什么逐渐又增加了多线程特性

1.单线程也有痛点

在这里插入图片描述

2.为什么引入多线程 删除大key时会阻塞

在这里插入图片描述

四、redis6/7 的多线程特性和IO多路复用(入门)

在这里插入图片描述

1.影响redis性能的三大因素

在这里插入图片描述

2.redis的网络IO—redis的性能瓶颈

网络命令—多线程
读写命令—单线程
在这里插入图片描述

3.主线程(读写)和IO线程(客户端连接)是怎样协作完成处理请求的 四个阶段

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

3.Unix网络编程中的五种IO模型

在这里插入图片描述

IO多路复用

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

a、FileDescriptor是什么?即文件句柄 相当于一个索引值

在这里插入图片描述

b、IO多路复用是什么?一种同步的IO模型,实现一个线程监视多个FileDescriptor

在这里插入图片描述

c、场景案例, epoll是什么?

在这里插入图片描述
场景说明 epoll相当于第三种, 总监视器,谁需要连接,就响应谁,没有请求就不打扰
在这里插入图片描述

总结 IO多路复用就是 只使用一个服务器进程可以同时处理多个套接字描述符(FileDescriptor)连接

在这里插入图片描述
图示:
在这里插入图片描述

最终解释:redis为什么这么快?

IO多路复用 + epoll函数使用,不仅仅是单线程命令 + redis安装在内存中
在这里插入图片描述

简单说明

在这里插入图片描述

1、主线程(读写操作) 和 IO线程(耗时的网络连接) 协作 精简版

协作前:即redis3 的单线程时代,网络连接和读写操作都是单线程

在这里插入图片描述

协作后:redis6开始,新增多线程,将网络连接和读写操作分离,让读写操作串行、单线程执行,而耗时的网络连接则是通过IO多路复用+epoll函数去处理

在这里插入图片描述

2、小总结

在这里插入图片描述

五、redis7 默认是否开启了多线程?

1、默认不开启,如何开启?

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

六、我还是曾经那个骚年

读写命令是单线程,网络连接变成了多线程
在这里插入图片描述

相关文章:

【redis】单线程 VS 多线程(入门)

【redis】单线程 VS 多线程(入门) 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成&#…...

2023蓝桥杯Java研究生组赛题

蓝桥杯Java研究生组、JavaA组看过来,这两个组别题目基本一样 第一次参加了Java研究生组,Java组应该没有C/C那么卷吧,主要是觉得Java组可以避开很多ACM大佬,前面几题感觉难度还行没有特别难,后面几个大题依旧是没法做&a…...

多维时序 | MATLAB实现CNN-BiLSTM-Attention多变量时间序列预测

多维时序 | MATLAB实现CNN-BiLSTM-Attention多变量时间序列预测 目录多维时序 | MATLAB实现CNN-BiLSTM-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 MATLAB实现CNN-BiLSTM-Attention多变量时间序列预测,CNN-BiLSTM-Atte…...

微积分——Rolle定理的理解(罗尔定理)

极值定理(Extreme Value Theorem)指出,闭区间[a,b]上连续的函数既有最大值,也有最小值。然而,其最大最小值都可能发生在端点。罗尔定理(Rolle’s Theorem)以法国数学家Michel Rolle(1652-1719)的名字命名,它给出了极值存在于闭区间…...

linux内核之select/poll/epoll

一些主流应用IO多路复用技术,突破高并发问题,如nginx、redis、netty,分布式服务框架dubbo,大数据组件hadoop、spark、flink、hbase纷纷使用netty作为网络通信组件。 一、背景:C10K问题 The C10K problem 最早被Dan …...

文件流下载

文件下载 后端传给前端json数据流,前端拿到之后存放在自定义的文件中import axios from "axios"; import qs from "query-string"; import {Notification } from "@arco-design/web-vue"; // 接口中需要含有文件名fileName export function dow…...

C语言模拟实现:atoi函数

在实现atoi之前我们先来了解一下atoi函数的作用是什么&#xff1a; 目录 1.实例演示 2.模拟实现 2.1 判断是否为空指针 2.2判断是否为空字符串 2.3判断正负号 2.4判断非数字字符 2.5判断是否越界 2.6完整代码 1.实例演示 //实例演示 #include <stdio.h> #include …...

LeetCode.每日一题 2427. 公因子的数目

Halo&#xff0c;这里是Ppeua。平时主要更新C语言&#xff0c;C&#xff0c;数据结构算法......感兴趣就关注我吧&#xff01;你定不会失望。 &#x1f308;个人主页&#xff1a;主页链接 &#x1f308;算法专栏&#xff1a;专栏链接 我会一直往里填充内容哒&#xff01; &…...

蓝牙BQB认证 - HFP profile配置说明

零.声明 本专栏文章我们会以连载的方式持续更新&#xff0c;本专栏计划更新内容如下&#xff1a; 第一篇:蓝牙综合介绍 &#xff0c;主要介绍蓝牙的一些概念&#xff0c;产生背景&#xff0c;发展轨迹&#xff0c;市面蓝牙介绍&#xff0c;以及蓝牙开发板介绍。 第二篇:Trans…...

【接口测试工具】Eolink Apikit 快速入门教程

Eolink Apikit 下载安装【官方版】&#xff1a;https://www.eolink.com/apikit 发起 API 测试 进入 API 文档详情页&#xff0c;点击上方 测试 标签&#xff0c;进入 API 测试页&#xff0c;系统会根据 API 文档自动生成测试界面并且填充测试数据。 填写请求参数 首先填写好请…...

使用Python和OpenCV实现实时人脸检测并保存截图

在本篇博客中&#xff0c;我们将使用Python和OpenCV库实现一个实时人脸检测的小项目。我们将利用OpenCV中的Haar级联分类器来检测摄像头捕获的图像中的人脸。 项目功能 通过摄像头实时捕获视频流。使用Haar级联分类器检测视频帧中的人脸。在检测到的人脸周围绘制矩形框。实时…...

[linux kernel]slub内存管理分析(7) MEMCG的影响与绕过

文章目录背景前情回顾描述方法约定MEMCG总览省流总结简介slub 相关 memcg机制kernel 5.9 版本之前结构体初始化具体实现kernel 5.9-5.14kernel 5.14 之后突破slab限制方法cross cache attackpage 堆风水总结背景 前情回顾 关于slab几个结构体的关系和初始化和内存分配和释放的…...

MySQL创建数据库(CREATE DATABASE语句)

在 MySQL 中&#xff0c;可以使用 CREATE DATABASE 语句创建数据库&#xff0c;语法格式如下&#xff1a; CREATE DATABASE [IF NOT EXISTS] <数据库名> [[DEFAULT] CHARACTER SET <字符集名>] [[DEFAULT] COLLATE <校对规则名>]; [ ]中的内容是可选的。语…...

【JavaWeb】4—Tomcat

⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&#x1f60a; 如果文章对你有所帮助&#xff0c;可以点赞&#x1f44d;…...

宝塔Linux面板部署Python flask项目

目录 &#x1f449;1、前言 &#x1f449;2、安装python项目管理器 &#x1f449;3、上传项目文件及文件夹 &#x1f449;4、配置项目 &#x1f449;5、请求测试 学习记录&#xff1a; &#x1f449;1、前言 写在前面&#xff1a;前几天我们实现了外网内外登录正方教务系…...

spring中产生bean的几种方式

BeanImportMyImportSelector implements ImportSelectorMyImportBeanDefinitionRegistarimplements ImportBeanDefinitionRegistrarFactoryBean这里着重讲解FactoryBean如何判断当前bean是否是FactoryBeanorg.springframework.beans.factory.support.AbstractBeanFactory#isFac…...

OD-火星文计算(Python)

火星文计算 题目描述 已经火星人使用的运算符号为# $ 其与地球人的等价公式如下x#y2*x3*y4x$y3*xy2x y是无符号整数 地球人公式按照c语言规则进行计算 火星人公式中$符优先级高于#相同的运算符按从左到右的顺序运算 输入描述 火星人字符串表达式结尾不带回车换行 输入的字符…...

【vue3教程】初入了解vue3的基本结构

前言 Animatrix&#xff1a;黑客帝国 Blade Runner&#xff1a;银翼杀手 Cowboy Bebop&#xff1a;星际牛仔 Dragon Ball&#xff1a;龙珠 Evangelion&#xff1a;新世纪福音战士 Ghostin the Shell&#xff1a;攻壳机动队 Hunter X Hunter&#xff1a;全职猎人 Initial D&…...

智慧供水综合运营平台解决方案

一、概述 建设背景&#xff1a; 供水系统是城市生存、发展的基础&#xff0c;供水事业的发展与城市的社会经济发展息息相关&#xff0c;其服务质量的好坏不仅关系到供水企业自身的利益&#xff0c;也直接影响到社会的稳定和政府形象。住房城乡建设部于2012年12月5日正式发布了《…...

文件系统、描述符和缓冲区

目录 &#x1f3c6;一、文件系统 1、open ①对open接口的介绍 ②接口使用 2、write接口 3、read接口 &#x1f3c6;二、深入理解文件描述符fd 1、fd具体实质 2、文件fd的分配规则 3、fd重定向 ①输出重定向 ②追加重定向 ③输入重定向 ④文件的引用计数 &#x1f3c6;三…...

IDEA项目乱码终结指南:从UTF-8全局设置到.properties文件特殊处理

IDEA项目乱码终结指南&#xff1a;从UTF-8全局设置到.properties文件特殊处理 在Java开发中&#xff0c;编码问题就像一颗定时炸弹&#xff0c;随时可能在最意想不到的时刻引爆。特别是当项目涉及多语言支持、团队协作或接手遗留代码时&#xff0c;乱码问题往往成为开发者挥之不…...

LyricsX终极指南:如何在macOS上免费获得完美歌词同步体验

LyricsX终极指南&#xff1a;如何在macOS上免费获得完美歌词同步体验 【免费下载链接】LyricsX &#x1f3b6; Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX 你是否厌倦了在不同音乐播放器间切换时手动搜索歌词&#xff1f;Lyr…...

树莓派驱动MAX31855热电偶传感器:从SPI通信到高精度测温实践

1. 项目概述&#xff1a;从热电偶到Python读数在嵌入式开发、工业监控或者任何需要精确测温的项目里&#xff0c;热电偶&#xff08;Thermocouple&#xff09;往往是工程师们的首选传感器。它结构简单、皮实耐用&#xff0c;而且测温范围能从零下两百多度一直覆盖到上千度&…...

ChartGPT终极指南:如何用AI快速生成专业图表

ChartGPT终极指南&#xff1a;如何用AI快速生成专业图表 【免费下载链接】chart-gpt AI tool to build charts based on text input 项目地址: https://gitcode.com/gh_mirrors/ch/chart-gpt 如果你还在为制作数据图表而烦恼&#xff0c;那么ChartGPT正是你需要的AI图表…...

Dell R730 2U服务器实战:解锁Nvidia P4计算卡在虚拟化环境下的AI训练潜能

1. 硬件准备与安装避坑指南 Dell PowerEdge R730作为一款经典的2U机架式服务器&#xff0c;在二手市场上性价比极高。我最近给实验室淘了两台二手R730&#xff0c;准备搭建AI训练集群。这次重点分享如何在这台服务器上安装Nvidia Tesla P4计算卡的经验。 先说说为什么选P4这张卡…...

从ChatGPT插件到自主Agent工作流:2026年AI工具栈跃迁的4个关键断点及突破路径

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;2026年AI工具栈搭建完整指南 构建面向生产环境的AI工具栈&#xff0c;需兼顾前沿性、稳定性与可扩展性。2026年主流实践已从单点模型调用转向模块化、可观测、可编排的智能工作流基础设施。以下为推荐技术选型…...

终极ASI加载器:Windows游戏修改的完整解决方案

终极ASI加载器&#xff1a;Windows游戏修改的完整解决方案 【免费下载链接】Ultimate-ASI-Loader The Ultimate ASI Loader is a proxy DLL that loads custom .asi libraries into any game process. 项目地址: https://gitcode.com/gh_mirrors/ul/Ultimate-ASI-Loader …...

Apex Legends压枪宏终极指南:轻松掌握自动武器检测与后坐力补偿技术

Apex Legends压枪宏终极指南&#xff1a;轻松掌握自动武器检测与后坐力补偿技术 【免费下载链接】Apex-NoRecoil-2021 Scripts to reduce recoil for Apex Legends. (auto weapon detection, support multiple resolutions) 项目地址: https://gitcode.com/gh_mirrors/ap/Ape…...

基于开源项目构建实时语音AI对话系统:从ASR、LLM到TTS的完整技术栈解析

1. 项目概述与核心价值 最近在折腾一个挺有意思的东西&#xff0c;一个叫 bigsk1/voice-chat-ai 的开源项目。简单来说&#xff0c;它让你能和一个AI进行实时的语音对话&#xff0c;就像打电话一样。你对着麦克风说话&#xff0c;AI不仅能听懂&#xff0c;还能思考&#xff0…...

Ubuntu 20.04远程桌面翻车记:手把手教你从LightDM救回默认GNOME桌面

Ubuntu 20.04桌面环境救援指南&#xff1a;从LightDM回归GNOME的完整方案 那天下午&#xff0c;实验室的Ubuntu服务器突然变得陌生——熟悉的GNOME桌面消失了&#xff0c;取而代之的是一个简陋的登录界面。前一天还能流畅运行的深度学习模型&#xff0c;现在连Jupyter Noteboo…...