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

Redis网络模型

redis为什么快

1.主要原因是因为redis是基于内存操作的,比起直接操作磁盘速度快好几倍

2.基于内存的数据库瓶颈主要是在网络io这一块,redis网络模型采用io多路复用技术能够高效的处理并发连接。

3.redis使用单线程执行命令,可以避免上下文切换带来的消耗,同时使用多线程处理网络io。

什么是io多路复用?

在这之前我们先了解一下io,网络io又可以为,BIO(阻塞io),NIO(非阻塞io)AIO(异步io)

BIO:当我们应用层想去获取数据时,由于操作系统还没有我们想要的数据,此时recvfrom函数会一直等待直到能获取数据,这个等待的过程就像被阻塞了一样。

NIO:当我们每一次调用recvfrom函数获取数据时,由于数据不存在,操作系统会直接返回结果,并不断的发起recvfrom直到获取数据。就像你们追心爱的女神一样,尽管被拒绝多次,还不停的示爱,总觉得他一定会返回你想要的结果。缺点就是不断的recvfrom做无用的功浪费资源。

什么又是多路复用呢?

如果我们每一个获取数据的请求都交给一个线程处理,我们应用层肯定是有并发请求的,显然我们操作系统共享资源肯定是不足够的。此时我们的计算机行业伟人‘牛顿’提出一个想法,让一个线程去监听多个事件fd。什么又是事件fd呢,你可以简单理解成我们每一个io请求在操作系统都有一个存放的地址,我们可以根据这个fd去找到该地址有没有存放数据。

AIO应用程序发起异步 I/O 请求。内核启动 I/O 操作,应用程序可以继续执行其他任务。I/O 操作完成后,内核通知应用程序(回调函数)。应用程序处理 I/O 结果,如读取数据或发送响应。


http://www.mrgr.cn/news/93496.html

相关文章:

  • 登录校验会话技术
  • Java中的String类
  • flask学习3-深入
  • pytest结合allure
  • 建筑兔零基础自学python记录39|实战词云可视化项目——章节分布10(上)
  • 【愚公系列】《Python网络爬虫从入门到精通》041-Matplotlib 图表的常用设置
  • 从0开始的操作系统手搓教程23:构建输入子系统——实现键盘驱动1——热身驱动
  • upload-labs靶场 1-21通关
  • Linux12-UDP\TCP
  • 正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-2.1 uboot简介
  • 【Mac】MacOS系统下常用的开发环境配置2025版
  • MRI学习笔记-Meta分析之SDM-PSI
  • Java集合面试题(持续更新)
  • leetcode15 三数之和
  • 嵌入式学习第二十三天--网络及TCP
  • 数据开发岗位: 面试测试题(2025年)
  • Android车机DIY开发之软件篇(二十)立创泰山派android编译
  • upload-labs详解(1-12)文件上传分析
  • 【人工智能】Open WebUI+ollama+deepSeek-r1 本地部署大模型与知识库
  • Linux和gcc/g++常用命令总结