-
【Redis线程模型】概念、模型图、原理_Redis10
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)单线程反而避免了多线程的频繁上下文切换带来的性能问题。
-
相关阅读:
Spring Boot 实现文件本地以及OSS上传
PHP排序sort()、asort() 和 ksort() 的区别及用法
wpf中listview内容居中显示
对一门不是非常熟悉的语言是怎么面试的
JAVA:实现Prim求最小生成树MST算法(附完整源码)
专访阿里云:AI 时代服务器操作系统洗牌在即,生态合作重构未来
Butterworth型IIR滤波器
分布式复制系统设计-总结
eyb:Redis学习(2)
20240229金融读报:央行阿拉善创新融资模式与碳排放权交易条例实施,新春政策聚焦新生产力及金融风险防范
-
原文地址:https://blog.csdn.net/weixin_38963649/article/details/127108480