Redis单线程为什么能这么快

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

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

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

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

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

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

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

accept → 建立连接成功 1

recv → 接受数据成功 2

parse

套接字是默认阻塞的

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

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

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

IO多路复用

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

→进行封装→Reactor模型

相关推荐
安娜的信息安全说21 小时前
深入浅出 MQTT:轻量级消息协议在物联网中的应用与实践
开发语言·物联网·mqtt
lang2015092821 小时前
Spring Boot日志配置完全指南
java·spring boot·单元测试
在坚持一下我可没意见21 小时前
HTTP 协议基本格式与 Fiddler 抓包工具实战指南
java·开发语言·网络协议·tcp/ip·http·java-ee·fiddler
樱花开了几轉21 小时前
element ui下拉框踩坑
开发语言·javascript·ui
报错小能手21 小时前
C++笔记(面向对象)RTTI操作符
开发语言·c++·笔记
草明21 小时前
Go 的 IO 多路复用
开发语言·后端·golang
蓝-萧21 小时前
Plugin ‘mysql_native_password‘ is not loaded`
java·后端
故事不长丨21 小时前
【Java SpringBoot+Vue 实现视频文件上传与存储】
java·javascript·spring boot·vscode·后端·vue·intellij-idea
晟盾科技21 小时前
报表类系统后端API设计思路
开发语言·windows·php
AI纪元故事会21 小时前
冰泪与雨丝:一个AI的Python挽歌
开发语言·人工智能·python