当前位置: 首页 > 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;三…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...