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

news2024/11/16 1:26:44

【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、默认不开启,如何开启?

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

六、我还是曾经那个骚年

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/410740.html

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

相关文章

Python之数据库操作(连接数据库,增删改查操作,易错点理解)

文章目录 前言一、Python之数据库操作二、pymysql 安装三、pymysql 包引入 连接数据库创建游标执行sql数据 - 增删改查要获取查询结果数据关闭游标,关闭数据库连接总结前言 记录:Python操作数据库的步骤,不容易理解的地方。 一、Python之数据…

开局一张图,构建神奇的 CSS 效果

假设,我们有这样一张 Gif 图: 利用 CSS,我们尝试来搞一些事情。 图片的 Glitch Art 风 在这篇文章中 --CSS 故障艺术,我们介绍了利用混合模式制作一种晕眩感觉的视觉效果。有点类似于抖音的 LOGO。 像是这样: 假设…

14、DRF实战总结:获取Django请求路径的方法以及各自的区别

Django项目开发中经常需要在视图中获取用户当前请求url的地址,然后进行跳转或判断操作,比如是否在url黑白名单里。Django提供了多种获取请求路径的实现方式,比如request.path, request.path_info, request.get_full_path和request.build_abso…

【Python】【进阶篇】十六、Python爬虫的浏览器实现抓包

目录十六、Python爬虫的浏览器实现抓包16.1 控制台界面16.1.1 NetWork16.1.2 Sources16.1.3 Console16.1.4 Application16.2 数据包抓取16.3 看变化规律十六、Python爬虫的浏览器实现抓包 几乎所有浏览器都提供了抓取数据包的功能,因为浏览器为抓包提供了一个专门的…

【MQTT协议】使用c++实现mqtt协议(Mosquitto源码编译)

目录MQTT协议简介发布/订阅模式简介MQTT协议与发布/订阅模式的联系基于Mosquitto实现的MQTT服务器Mosquitto安装MQTT协议简介 MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的消息传输协议,其最初由IBM开发&…

(链表专题) 445. 两数相加 II ——【Leetcode每日一题】

445. 两数相加 II 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例1: 输入:l1 [7,2,…

什么是时间复杂度和空间复杂度

什么是时间复杂度和空间复杂度 🍕博客主页:️自信不孤单 🍬文章专栏:数据结构与算法 🍚代码仓库:破浪晓梦 🍭欢迎关注:欢迎大家点赞收藏关注 文章目录什么是时间复杂度和空间复杂度1…

【服务器数据恢复】 EXT4文件系统下KVM虚拟机数据恢复案例

服务器数据恢复环境: Linux系统服务器,EXT4文件系统,部署KVM虚拟机。 服务器故障: 服务器上的KVM虚拟机被误操作删除,每台虚拟机包含一个qcow2格式的磁盘文件和一个raw格式的磁盘文件,需要恢复raw格式的磁…

大数据-玩转数据-oracle创建dblink及应用

一、创建DBLINK的应用场景 oracle在进行跨库访问时,可以通过创建dblink实现。 二、创建DBLINK应用场景 在tnsnames.ora中配置两个数据库别名:orcl(用户名:wangyong 密码:1988)、orcl2(用户名:wangyong 密码&#xf…

第5章 uniapp开发ImoocBlog

收获: 1.微信小程序 2.uni-app开发慕课热搜项目 3.构建企业级项目的编程思维 4.上线可商用的企业项目 第5章 uniapp开发ImoocBlog uniapp开发ImoocBlog 5-1:开篇 经过前面四个章节,我们已经完成了 微信小程序 的学习。那么从这一章开始我…

【微服务笔记10】微服务组件之Hystrix实现服务降级和服务熔断

这篇文章,主要介绍微服务组件之Hystrix实现服务降级和服务熔断。 目录 一、服务降级 1.1、什么是服务降级 1.2、实现服务降级 (1)引入依赖 (2)编写Service层代码 (3)编写Controller层代码…

CesiumForUnreal实现鹰眼地图(MiniMap)效果

文章目录 1.实现目标2.实现过程3.参考资料1.实现目标 基于CesiumForUnreal插件加载的在线地形和影像数据,使用Widget实现鹰眼小地图的效果,GIF动图如下: 2.实现过程 在UE开发中,常用的以Widget方法实现小地图的形式有两种。一种是动态的小地图,即地图的纹理图片会发生变化…

【Spark】RDD缓存机制

1. RDD缓存机制是什么? 把RDD的数据缓存起来,其他job可以从缓存中获取RDD数据而无需重复加工。 2. 如何对RDD进行缓存? 有两种方式,分别调用RDD的两个方法:persist 或 cache。 注意:调用这两个方法后并不…

腾讯云轻量服务器和云服务器区别对比(超详细全方位)

腾讯云轻量服务器和云服务器有什么区别?为什么轻量应用服务器费用更低?是因为轻量服务器CPU内存性能比云服务器CVM性能差吗?轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境,云服务器CV…

Parcel 实践:轻松打包前端项目

结论 Parcel 是一个功能强大且易于使用的前端构建工具,它可以帮助您快速地构建 Web 项目。本文提供了关于如何开始使用 Parcel、配置和优化性能的实践方法。希望这些内容对您有所帮助! Parcel 是一个快速,零配置的 Web 应用打包工具。它的简单…

7nm舱泊一体SoC的新玩家

2016年,高通推出基于14纳米工艺的汽车座舱芯片骁龙820A,彼时,传统座舱SoC霸主NXP主推的是28纳米工艺的iMX8系列。不过,两款芯片都没有能够达到预期的量产效果。 真正的时代变革,来自于高通在2019年发布的全球首款量产7…

【产品设计】电商后台系统设计--订单管理

电商后台产品,涉及众多模块,而以商品、订单、库存,为核心模块,模块之间存在大量交互。订单较为重要,它记录了所有的交易数据 对电商公司来讲,最核心最难做的有三部分:商品、订单、库存。商品与店…

记一次中大规模数据库迁移过程,从MySql到PostgreSQL.

从MySql到PostgreSQL迁移的决策过程就不说了。我也是第一次用PostgreSQL,也没法说好不好。决策已经定了,下面介绍一下执行过程。 一、数据基本情况 服务器:4核CPU,8G内存,1T硬盘,8Mbit网速。 数据库&…

【建站】手把手教你搭建惊艳的博客

系列文章目录 第一章 手把手教你搭建自己的博客 文章目录系列文章目录前言一、网站软件的选择二、网站空间的选择1. 建议选择有名、大厂的2. 上手容易,丰富而详实的文档3. 要稳定,少出问题4. 及时处理并有能力处理问题三、 环境准备四、 安装PHP81. 首先…

sql知识点复习以及项目中的例子

常见的聚合函数: avg(),求平均值; sum() 求和; count(),计算和; min()求最小值; max&#xff…