【redis】redis为什么这么快?高性能设计之epoll和I/O多路复用深度解析

news2024/11/18 10:31:21

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、before 学习I/O多路复用之前
    • 多路复用 需要解决的问题 一对一性能差
    • 结论 需要让一个进程同时处理多个连接
  • 二、I/O多路复用模型
    • 1、是什么?
      • 一句话
    • 2、redis单线程如何处理那么多并发客户端连接,为什么单线程,为什么快?
    • 3、参考《redis设计与实现》
      • 结论
    • 4、从吃米线开始,读读read
      • 吃米线比喻
      • 同步
      • 异步
      • ==同步与异步的理解==
      • 阻塞
      • 非阻塞
      • ==阻塞与非阻塞的理解==
      • 总结
    • 5、Unix网络编程中的五种IO模型
    • 6、Java验证
      • BIO
        • 演示accept
        • 演示read
          • 1 单线程
          • 2 多线程
        • BIO总结
      • NIO
        • 回答
        • 案例code
        • 存在问题和优缺点
      • IO多路复用
        • 是什么?
        • 说人话
        • 能干嘛?
          • 为什么这么快?
          • reactor设计模式
        • select、poll、epoll都是I/O多路复用的具体实现
          • select 将用户传入的数据传入到内核空间
          • poll
          • epoll
          • 三种方法对比
        • 5种I/O模型总结
        • 为什么3个都保有 redis对IO多路复用函数的选择


前言

在这里插入图片描述


一、before 学习I/O多路复用之前

多路复用 需要解决的问题 一对一性能差

在这里插入图片描述

结论 需要让一个进程同时处理多个连接

在这里插入图片描述

二、I/O多路复用模型

1、是什么?

在这里插入图片描述

一句话

在这里插入图片描述

2、redis单线程如何处理那么多并发客户端连接,为什么单线程,为什么快?

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

3、参考《redis设计与实现》

在这里插入图片描述

结论

在这里插入图片描述

4、从吃米线开始,读读read

在这里插入图片描述

吃米线比喻

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

同步

在这里插入图片描述

异步

在这里插入图片描述

同步与异步的理解

在这里插入图片描述

阻塞

在这里插入图片描述

非阻塞

在这里插入图片描述

阻塞与非阻塞的理解

在这里插入图片描述

总结

四种方式
在这里插入图片描述

5、Unix网络编程中的五种IO模型

在这里插入图片描述

6、Java验证

在这里插入图片描述

BIO

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

演示accept

在这里插入图片描述

演示read

在这里插入图片描述

1 单线程

在这里插入图片描述

单线程存在的问题
在这里插入图片描述
解决:多线程
在这里插入图片描述

2 多线程

在这里插入图片描述

多线程存在的问题
在这里插入图片描述
解决:线程池 和 NIO非阻塞
在这里插入图片描述

BIO总结

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

总结 来一个new一个线程
在这里插入图片描述

NIO

在这里插入图片描述

NIO 轮询替代阻塞
在这里插入图片描述

回答

在这里插入图片描述

案例code

在这里插入图片描述

存在问题和优缺点

在这里插入图片描述

问题升级
在这里插入图片描述

非阻塞IO小总结
在这里插入图片描述

IO多路复用

在这里插入图片描述

是什么?

在这里插入图片描述

模型
在这里插入图片描述
文件标识符 FD
在这里插入图片描述

IO多路复用
在这里插入图片描述
在这里插入图片描述

说人话

在这里插入图片描述

能干嘛?

在这里插入图片描述

为什么这么快?

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

reactor设计模式

在这里插入图片描述

是什么?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
每个网络连接都对应一个文件描述符FD
在这里插入图片描述
在这里插入图片描述

select、poll、epoll都是I/O多路复用的具体实现

在这里插入图片描述

select 将用户传入的数据传入到内核空间

Linux官网解释 1983年左右开始
在这里插入图片描述
select函数执行逻辑
在这里插入图片描述
优点
在这里插入图片描述
在这里插入图片描述

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

poll

在这里插入图片描述
poll函数执行逻辑
在这里插入图片描述

解决的问题
在这里插入图片描述

优点
在这里插入图片描述
缺点、问题
在这里插入图片描述

epoll

在这里插入图片描述
三步调用 创建epoll句柄、向内核增删改要监控的文件描述符FD、类似于发起select调用
在这里插入图片描述
epoll函数执行的逻辑
在这里插入图片描述

结论
在这里插入图片描述

三种方法对比

在这里插入图片描述

5种I/O模型总结

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

为什么3个都保有 redis对IO多路复用函数的选择

redis建议安装在Linux上,会选择epoll函数,而其他操作系统可能会选择select函数
在时间复杂度上,有很大差距
在这里插入图片描述
在这里插入图片描述


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

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

相关文章

Edge插件之WeTab,画面优美,可以免费使用chatgpt,很难不爱

目录 一、普通的edge新标签页 二、安装WeTab插件 1.WeTab插件的安装非常简单,只需在百度搜索wetab,进入官网: 2.进入官网,点击edge图标,进入插件下载页面: 3.这里由于我是已经安装成功,显示…

无法上网问题解决过程

下班,收到一同事在群里说,环境里有冒充网关的mac的,现在无法上网,让arp -s ip mac地址,先绑定正确的网关mac地址,先临时使用,等第二天上班再查找原因。 不能上网原因: 1、环境…

Cloud Studio 内核升级之触手可及

前言 Cloud Studio是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用 Cloud Studio 时无需安装,随时随地打开浏览器就能使用。云端开发体验与本地几乎一样,上手门槛更低&#x…

IMU和GPS融合定位(ESKF)

说明 1.本文理论部分参考文章https://zhuanlan.zhihu.com/p/152662055和https://blog.csdn.net/brightming/article/details/118057262 ROS下的实践参考https://blog.csdn.net/qinqinxiansheng/article/details/107108475和https://zhuanlan.zhihu.com/p/163038275 理论 坐标…

三年测试,月薪才12k,想跳槽又不太敢.....

在我们的身边,存在一个普遍现象:很多人从事软件测试岗,不计其数,经历的心酸难与外人道也。可是技术确难以提升、止步不前,薪资也只能看着别人水涨船高,自己却没有什么起色。 虽然在公司里属于不可缺少的一…

java学习笔记

java学习笔记 直接写出来的人可以理解的数据,在java中叫做字面量。 字面量分类: 数据类型分类: 不同的数据类型分配了不同的内存空间,不同的内存空间,所存储的数据大小是不一样的。 数据类型内存占用和取值范围…

JavaSE入门必读篇——详解数组

文章目录 数组的概念1.什么是数组呢?2.如何创建数组3.遍历数组4.扩展:快速批量初始化 数组原理内存图1. 内存概述2.Java虚拟机的内存划分3.其存储方式图4.认识null 二维数组二维数组初始化遍历二维数组 数组常见异常1. 数组越界异常2. 数组空指针异常 Ja…

Windows下编译安装gRPC

gRPC是Google基于HTTP/2协议开发的一套开源、跨平台的高性能RPC框架,可用于连接微服务架构内的各种服务,亦可以连接客户端与后端服务。 Ref. from gRPC gRPC is a modern open source high performance Remote Procedure Call (RPC) framework that can…

代码随想录算法训练营第二十四天|理论基础 77. 组合

文章目录 理论基础77.组合思路代码总结 理论基础 回溯算法:一种暴力搜索方式 回溯是递归的副产品,只要有递归就会有回溯。 回溯法,一般可以解决如下几种问题: 组合问题:N个数里面按一定规则找出k个数的集合切割问题…

数据安全技术工作部成员动态 | 鸿翼联合天空卫士打造“基于内容的敏感信息处理”解决方案

据2022年统计数据表明,因IT故障、人为错误、供应链攻击、破坏性攻击和勒索软件攻击等原因导致的数据泄露事件频繁发生,信息安全问题比以往任何一个时代都更为突出。信息泄漏造成的危害体现在多方面,不法分子通过各种途径收集的公司的某些重要…

大数据法律监督模型优势特色及应用场景

大数据法律监督平台是基于监督数据整合管理平台、监督模型构建平台、内置模型库以及法律监督线索管理平台打造的一套服务于检察机关法律监督工作的专业化系统。通过数据采集、融合、挖掘、建模、展现等一系列能力,辅助检察官从纷繁复杂的数据中,开展多维…

基于可靠姿态图初始化和历史重加权的鲁棒多视图点云配准

论文作者 | Haiping Wang, Haiping Wang,Haiping Wang,etal 论文来源 | CVPR2023 文章解读 | William 1 摘要 之前的多视图配准方法依赖于穷举成对配准构造密集连接的位姿图,并在位姿图上应用迭代重加权最小二乘(IRLS)计算扫描位姿。但是,构造一个密集…

产品经理必读丨如何找准产品定位?

我们都知道,当一款新产品开始立项之前,势必需要经过谨慎的市场调研才能整合资源启动新的项目,但除此之外,作为产品经理还需要做好一件关键的事情——找准产品在市场中的定位。 什么是产品定位 百度百科对产品定位的解释是非常准确…

重磅新闻!!! ChatGPT手机 app上线苹果app store

就在刚才,打开Tor访问openAI官网准备看看有什么新闻,结果吓我一跳啊! 👇👇👇 ChatGPT app上线APP store了! 我马上拿出手机,一搜索,哎~出现了: chatgpt ios …

想端起“铁饭碗”,你最好先学会这个!

正文共 886 字,阅读大约需要 3 分钟 公务员必备技巧,您将在3分钟后获得以下超能力: 快速生成推荐材料 Beezy评级 :B级 *经过简单的寻找, 大部分人能立刻掌握。主要节省时间。 ●图片由Lexica 生成,输入&a…

Linux---cd命令、pwd命令、mkdir命令

1. cd命令 当Linux终端(命令行)打开的时候,会默认以用户的HOME目录作为当前的工作目录 我们可以通过cd命令,更改当前所在的工作目录。 cd命令来自英文:Change Directory 语法:cd [ linux路径] cd命令…

OpenAI被曝将发布全新开源大模型,网友:GPT平替?

来源 | 量子位 | 公众号 QbitAI OpenAI终于要“Open”了! 最新爆料,他们正准备发布全新的开源语言模型。 GPT-2之后,这尚属四年来首次。 不少网友戳戳手表示期待:这是要发自己的开源平替了吗? 毕竟目前最好的开源…

单片机--SPI协议

目录 【1】SPI协议 1.SPI协议 2.SPI时序 【2】LCD液晶显示屏 【3】点亮LCD显示屏 图片显示 汉字显示 【1】SPI协议 1.SPI协议 SPI(Serial Peripheral Interface)是 摩托罗拉公司(Motorola)首先提出的全双工同步串行外设接口,采用主从模式(Master、…

webpack核心原理

背景 Webpack 特别难学!!! 时至 5.0 版本之后,Webpack 功能集变得非常庞大,包括:模块打包、代码分割、按需加载、HMR、Tree-shaking、文件监听、sourcemap、Module Federation、devServer、DLL、多进程等…

传感云智慧公厕综合解决方案,实现公厕精细化管理

随着国家“公厕革命”建设工作的持续推动与科技创新技术的不断进步,人们对“方便”与“卫生”的要求越来越高,智慧公厕已然成为智慧城市建设规范下的公共厕所新形态,不仅可以解决传统公厕的脏乱差、异味和管理难题,同时可以为用户…