当前位置: 首页 > 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、默认不开启,如何开启?

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

六、我还是曾经那个骚年

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

http://www.lryc.cn/news/57855.html

相关文章:

  • 2023蓝桥杯Java研究生组赛题
  • 多维时序 | MATLAB实现CNN-BiLSTM-Attention多变量时间序列预测
  • 微积分——Rolle定理的理解(罗尔定理)
  • linux内核之select/poll/epoll
  • 文件流下载
  • C语言模拟实现:atoi函数
  • LeetCode.每日一题 2427. 公因子的数目
  • 蓝牙BQB认证 - HFP profile配置说明
  • 【接口测试工具】Eolink Apikit 快速入门教程
  • 使用Python和OpenCV实现实时人脸检测并保存截图
  • [linux kernel]slub内存管理分析(7) MEMCG的影响与绕过
  • MySQL创建数据库(CREATE DATABASE语句)
  • 【JavaWeb】4—Tomcat
  • 宝塔Linux面板部署Python flask项目
  • spring中产生bean的几种方式
  • OD-火星文计算(Python)
  • 【vue3教程】初入了解vue3的基本结构
  • 智慧供水综合运营平台解决方案
  • 文件系统、描述符和缓冲区
  • java微服务商城高并发秒杀项目--009.流控规则和降级规则
  • php编写的脚本,如何才能在windows系统运行呢?
  • 政务综合服务平台建设项目方案书
  • python好玩的短代码
  • 会Python如何学习C#的几个关键点
  • 索引失效原则与查询优化
  • 读完这篇文章你就彻底了解了什么是AES算法
  • ArrayDeque类常用方法
  • Leetcode.130 被围绕的区域
  • MySQL-四大类日志
  • 新加坡量子软件公司Horizon完成1810万美元A轮融资