Redis单线程为什么能这么快

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

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

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

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

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

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

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

accept → 建立连接成功 1

recv → 接受数据成功 2

parse

套接字是默认阻塞的

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

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

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

IO多路复用

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

→进行封装→Reactor模型

相关推荐
程序员清风5 小时前
北京回长沙了,简单谈谈感受!
java·后端·面试
何中应5 小时前
请求头设置没有生效
java·后端
凡人叶枫5 小时前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
亓才孓5 小时前
[JDBC]批处理
java
春日见5 小时前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设
锐意无限6 小时前
Swift 扩展归纳--- UIView
开发语言·ios·swift
低代码布道师6 小时前
Next.js 16 全栈实战(一):从零打造“教培管家”系统——环境与脚手架搭建
开发语言·javascript·ecmascript
宋小黑6 小时前
JDK 6到25 全版本网盘合集 (Windows + Mac + Linux)
java·后端
念何架构之路6 小时前
Go进阶之panic
开发语言·后端·golang
7哥♡ۣۖᝰꫛꫀꪝۣℋ6 小时前
Spring-cloud\Eureka
java·spring·微服务·eureka