redis单线程为什么这么快


文章目录


redis单线程为什么这么快

redis是使用的单线程来进行操作的,因为所有的数据都是在内存中的,内存操作特别快。而且单线程避免了多线程切换性能损耗问题

单线程如何处理并发客户端连接?

redis利用epoll来实现IO多路复用,将连接信息和事件放到队列中,一次放到文件事件分派器,事件分派器分发给事件处理器。Redis 内部使用文件事件处理器 file event handler ,这个文件事件处理器是单线程的,所以 Redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,将产生事件的 socket 压入内存队列中,事件分派器根据 socket 上的事件类型来选择对应的事件处理器进行处理

文件事件处理器的结构包含 4 个部分:

  • 多个 socket
  • IO 多路复用程序
  • 文件事件分派器
  • 事件处理器(连接应答处理器、命令请求处理器、命令回复处理器)

多个 socket 可能会并发产生不同的操作,每个操作对应不同的文件事件,但是 IO 多路复用程序会监听多个 socket,会将产生事件的 socket 放入队列中排队,事件分派器每次从队列中取出一个 socket,根据 socket 的事件类型交给对应的事件处理器进行处理。

redis6.0新特性

redis在6.0之后开始引入多线程,因为读写网络的 Read/Write 系统调用在 Redis 执行期间占用了大部分 CPU 时间,如果把网络读写做成多线程的方式对性能会有很大提升。

Redis 的多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程

参考文献

相关推荐
郝学胜-神的一滴2 小时前
避免使用非const全局变量:C++中的最佳实践 (C++ Core Guidelines)
开发语言·c++·程序人生
晓衣1 天前
2025“獬豸杯”全国电子数据取证竞赛-k8s服务器取证wp
服务器·经验分享·程序人生·网络安全·容器·kubernetes·学习方法
JosieBook1 天前
【程序人生】有梦想就能了不起,就怕你没梦想
程序人生·职场和发展
利以檀本人(梦泽不忙)4 天前
#T1359. 围成面积
c++·程序人生·算法
jingling5554 天前
【高级】系统架构师 | 信息系统战略规划、EAI 与新技术
程序人生·职场和发展·系统架构·学习方法·程序员创富
序属秋秋秋5 天前
我的创作纪念日——《惊变365天》
经验分享·学习·程序人生·纪念日·生活·大学生
蓑衣客VS索尼克5 天前
第三章:生活重构:当程序员不再只是“码农“
学习·程序人生·重构·生活
武子康5 天前
66AI-调查研究-68-具身智能 应用全景:家庭、工业、医疗、交通到虚拟交互的未来趋势
人工智能·程序人生·ai·职场和发展·交互·个人开发·具身智能
swanwei5 天前
技术人员突围之路(15年技术管理经验总结)之十
学习·程序人生·生活·求职招聘·交友
武子康7 天前
AI-调查研究-67-具身智能 核心技术构成全解析:感知、决策、学习与交互的闭环系统
人工智能·科技·学习·程序人生·ai·职场和发展·职场发展