搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小小林熬夜学编程
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
百度网盘直接下使用(kali系统盘)室友打游戏太吵kali系统一条命令断掉wlan网络_kali百度网盘
2
空间数据库简介
3
1.6 Nacos服务配置中心应用实践_nacos配置服务实例
4
STC89C52的硬件电路详细解析说明_stc89c52单片机硬件相关知识
5
[海森推荐]人工智能-人工智能好书推荐
6
2.Redis的五种数据结构及其常见操作命令_.redis热点数据取前几的数据结构和命令
7
zookeeper+hadoop+hbase伪分布式安装最全教程
8
深度学习未来发展方向_深度学习 发展 方向 module deepe
9
【用户投稿】Apache SeaTunnel 2.3.3+Web 1.0.0版本安装部署
10
Java全局变量
当前位置:
article
> 正文
【Redis线程模型】概念、模型图、原理_Redis10_redis 线程模型
作者:小小林熬夜学编程 | 2024-05-15 21:55:56
赞
踩
redis 线程模型
18、Redis线程模型、单线程快的原因?
1、线程模型的概述:
IO多路复用机制:
一个线程同时监听多个Socket
。
下面所有的
事件处理器
都是被包裹在同一个组件里面,这个组件的统称叫做
文件事件处理器
。
这个
文件事件处理器是单线程的
,他是
通过IO多路复用程序去监听所有的Socket
。
只要
有请求发送就会有事件产生
,而
IO多路复用程序就是监听Socket产生的事件
。只要
产生事件就把它入队列
。
文件事件处理器分类:
如果是
客户端要连接redis
,那么会为socket关联
连接应答处理器(连接)
如果是
客户端要写数据到redis
,那么会为socket关联
命令请求处理器(写)
如果是
客户端要从redis读数据
,那么会为socket关联
命令回复处理器(读)
2、核心知识:
Redis基于Reactor模式开发了网络事件处理器,这个处理器叫做文件事件处理器 file event handler。
这个
文件事件处理器,它是单线程的
,所以 Redis 才叫做单线程的模型,它采用
IO多路复用机制来同时监听多个Socket
,
根据Socket上的事件类型
来
选择对应的事件处理器来处理这个事件
。
这种文件事件处理器模式,
既可以实现高性能
的
网络通信模型
,又可以
跟内部其他单线程的模块进行对接
,保证了 Redis 内部的线程模型的简单性。
文件事件处理器的结构包含4个部分:
多个Socket
IO多路复用
程序
文件事件分派器
事件处理器
(命令请求处理器、命令回复处理器、连接应答处理器等)。
Socket 可能有
连接事件
、
读事件
、
写事件
、
删除事件
等。
多个 Socket
可能并发的产生不同的操作
,
每个操作对应不同的文件事件
,但是
IO多路复用程序会监听多个 Socket
,会
将 Socket 放入一个队列中排队
,每次
从队列中取出一个 Socket 给事件分派器
,
事件分派器把 Socket 分配给对应的事件处理器
。
然后
一个 Socket 的事件处理完之后
,IO多路复用程序
才会将队列中的下一个 Socket 给事件分派器
。文件事件分派器会根据每个 Socket 当前产生的事件,来选择对应的事件处理器来处理。
3、单线程快的原因:
1)
纯内存操作
。
2)核心是
基于非阻塞的IO多路复用机制
。
3)单线程反而
避免了多线程的频繁上下文切换带来的性能问题
。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/575176
推荐阅读
article
一个基于
SpringBoot
+
Redis
+
Vue
仿饿
了
么
外卖
系统(后台+移动端)
,
可
二次开发
接私...
该项目是一款仿饿
了
么
外卖
平台系统
,
参考
了
一些现有其他开源
外卖
项目
,
在此基础之上
,
做
了
优化处理
,
并使用
SpringBoot
...
赞
踩
article
基于
SpringBoot
+
Redis
+
Vue
的后台
管理系统
开源项目,大厂面试必备技能_springb...
总的来说,面试是有套路的,一面基础,二面架构,三面个人。最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍...
赞
踩
article
Prometheus
监控
Redis
集群,
Mysql
并显示到
Granfana
仪表盘
_red...
prometheus
监控
redis
集群并显示到granfana面板_
redis
仪表板
监控
redis
仪表板
监控
...
赞
踩
article
【
Redis
】
Redis
是
什么
、
能干什么
、
主要
功能
和工作原理
的
详细讲解_
redis
是
干嘛
的
...
【
Redis
】
Redis
是
什么
、
能干什么
、
主要
功能
和工作原理
的
详细讲解_
redis
是
干嘛
的
redis
是
干嘛
的
...
赞
踩
article
Redis
?它
主要
用来
什么
的...
Redis
,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言...
赞
踩
article
Redis
7.0
核心技术
、实战
应用
、面试题_redis
7.0
...
Redis
7
核心技术
与实战
应用
面试题_redis
7.0
redis
7.0
...
赞
踩
article
Redis
原理_
redis
原理...
Redis
原理 事务 持久化 过期策略 淘汰策略 _
redis
原理
redis
原理 ...
赞
踩
article
解决:“
redis
.
clients
.
jedis
.
exceptions
.JedisClusterMax...
jedis
连接Redis集群时报错:“
redis
.
clients
.
jedis
.
exceptions
.JedisClust...
赞
踩
article
red
is
连接异常
red
is
.
clients
.
jed
is
.
exceptions
.Jed
is
Clus...
遇到一个问题,因为是在测试环境,之前退出使用的kill -9暴力方式,再重新启动
red
is
集群的时候,先并没有恢复rdb...
赞
踩
article
red
is
.clients.
jed
is
.execption.Jed
is
ClusterExceptio...
Exception in thread ‘‘main’’
red
is
.clients.
jed
is
.execption.J...
赞
踩
article
2024年
面试
复盘大全500道:
Redis
+ZK+
Nginx
+
数据库
+分布式+微服务_
redis
面试
...
今天分享给大家的都是目前主流企业使用最高频的
面试
题库,也都是 Java 版本升级之后,重新整理归纳的最新答案,会让
面试
者...
赞
踩
article
2024
年
最新
版68道
Redis
面试题
,
20000字干货
,
赶紧收藏起来备用_
2024
redis
最...
学完之后
,
若是想验收效果如何
,
其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind...
赞
踩
article
redis...
1、什么是Redis?Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加...
赞
踩
article
Redis
面试题
(常见
20
道)_
redis
面试题
csdn
...
1.
Redis
面试题
1、什么是
Redis
?2、
Redis
的数据类型?3、使用
Redis
有哪些好处?4、Redi...
赞
踩
article
Redis
实战之
客户端
属性...
服务器状态结构使用 clients 链表连接起多个
客户端
状态, 新添加的
客户端
状态会被放到链表的末尾。
客户端
状态的 fl...
赞
踩
article
Redis
内存优化技巧_
lettuce
redis
gzip
压缩...
Redis
内存优化技巧_
lettuce
redis
gzip
压缩
lettuce
redis
gzip
压缩 ...
赞
踩
article
解决
docker
运行
redis
报错:
Fatal
error
, can‘t
open
conf
ig f...
解决
docker
运行
redis
报错:
Fatal
error
, can't
open
conf
ig
file
/etc/r...
赞
踩
article
基于
golang
,
grpc
, gin 和
redis
,
kafka
, MySQL,
etcd
和...
✨基于
golang
,
grpc
, gin 和
redis
,
kafka
, MySQL,
etcd
和 vue3 的简单...
赞
踩
article
对
Redis
的
安装及使用,
idea
上
的
配置
--
保姆级教程_
idea
中
redis
...
Redis
是一种高级
的
、开源
的
、基于内存
的
键值存储系统,它也可以被认为是一种数据结构服务器,因为键可以关联到五种不同
的
数...
赞
踩
article
IDEA
连接
Redis_idea
redis
...
idea
redis
...
赞
踩
相关标签
java
数据库
mysql
vue
spring boot
redis
vue.js
prometheus
缓存
nosql
nosql数据库
个人开发
开发语言
后端