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

面试redis篇-13Redis为什么那么快

  1. Redis是纯内存操作,执行速度非常快
  2. 采用单线程,避免不必要的上下文切换可竞争条件,多线程还要考虑线程安全问题
  3. 使用I/O多路复用模型,非阻塞IO

I/O多路复用模型

        Redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度, I/O多路复用模型主要就是实现了高效的网络请求

  • 用户空间和内核空间
  • 常见的IO模型
    • 阻塞IO(Blocking IO)
    • 非阻塞IO(Nonblocking IO)
    • IO多路复用(IO Multiplexing)
  • Redis网络模型

用户空间和内核空间

  • Linux系统中一个进程使用的内存情况划分两部分:内核空间、用户空间
  • 用户空间只能执行受限的命令(Ring3),而且不能直接调用系统资源       必须通过内核提供的接口来访问
  • 内核空间可以执行特权命令(Ring0),调用一切系统资源

Linux系统为了提高IO效率,会在用户空间和内核空间都加入缓冲区:

  • 写数据时,要把用户缓冲数据拷贝到内核缓冲区,然后写入设备
  • 读数据时,要从设备读取数据到内核缓冲区,然后拷贝到用户缓冲区

阻塞IO

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

相关文章:

  • python Matplotlib Tkinter--pack 框架案例
  • 连接未来:嵌入式系统在物联网时代的应用
  • 自动驾驶中的障碍物时间对齐法
  • 介绍 PIL+IPython.display+mtcnn for 音视频读取、标注
  • C语言中strstr函数的使用!
  • Vue项目中,src目录下的vue.app文件介绍
  • 【Android】坐标系
  • OSCP靶场--Slort
  • 大数据职业技术培训包含哪些
  • 【Java程序设计】【C00313】基于Springboot的物业管理系统(有论文)
  • TensorFlow训练大模型做AI绘图,需要多少的GPU算力支撑
  • docker创建mongodb数据库容器
  • Python并发编程:多线程-线程理论
  • 自定义Chrome的浏览器开发者工具DevTools界面的字体和样式
  • 人事|人事管理系统|基于Springboot的人事管理系统设计与实现(源码+数据库+文档)
  • React18源码: Fiber树中的优先级与帧栈模型
  • Hive 最全面试题及答案(基础篇)
  • 【力扣】整数反转,判断是否溢出的数学解法
  • Jmeter之内置函数__property和__P的区别
  • GPT润色指令
  • Ubuntu中matplotlib显示中文的方法
  • String类-equals和==的区别-遍历-SubString()-StringBuilder-StringJoiner-打乱字符串
  • IDEA的LeetCode插件的设置
  • 2024.2.29 模拟实现 RabbitMQ —— 项目展示
  • React htmlfor
  • 现代化数据架构升级:毫末智行自动驾驶如何应对年增20PB的数据规模挑战?
  • 理解Stable Diffusion、LoRA、Dreambooth、Hypernetworks、Textual Inversion、Checkpoint
  • spring boot3登录开发-2(1图形验证码接口实现)
  • 网络编程中的问题总结
  • 数据结构-关键路径