Redis单线程为什么能这么快

1.Redis大部分操作发在内存中完成

2.选择了很多高效的数据结构,一种对象底层有几种实现以应对不同场景

3.Redis采用了多路复用机制,一个线程监听多个通道,能并发处理大量的客户端请求

每次客户端与服务端进行连接,会生成一个文件描述符file description

主要是第三点,单线程我们会在哪里阻塞,多路复用又帮了我们什么?

Redis在内存中处理数据,I/O是瓶颈之一

一般来说,客户端发送数据,我们需要三个过程来进行读取,分别是

accept → 建立连接成功 1

recv → 接受数据成功 2

parse

套接字是默认阻塞的

一般1和2都会产生时间进行阻塞

我们使用非阻塞模式,如果没数据,就不会阻塞在那里

然后我们通过一个循环来不断轮询(不断检查各个IP通道的状态,决定操作是否需要执行)

IO多路复用

每次IO操作触发,产生通知,通知就会触发另外一些操作

→进行封装→Reactor模型

相关推荐
say_fall2 分钟前
C语言编程实战:每日一题 - day7
c语言·开发语言
tuokuac3 分钟前
@PathVariable与@RequestParam
java·spring
q***160810 分钟前
Tomcat的server.xml配置详解
xml·java·tomcat
程序员西西10 分钟前
SpringBoot整合Apache Spark实现一个简单的数据分析功能
java·后端
n***840711 分钟前
Tomcat 乱码问题彻底解决
java·tomcat
LiLiYuan.14 分钟前
【Lombok库常用注解】
java·开发语言·python
Charles_go34 分钟前
C#中级45、什么是组合优于继承
开发语言·c#
培风图南以星河揽胜1 小时前
Java实习模拟面试|离散数学|概率论|金融英语|数据库实战|职业规划|期末冲刺|今日本科计科要闻速递:技术分享与学习指南
java·面试·概率论
能鈺CMS1 小时前
能鈺CMS · 虚拟发货源码
java·大数据·数据库
二川bro1 小时前
数据可视化进阶:Python动态图表制作实战
开发语言·python·信息可视化