Redis

Redis学习笔记(四)线程模型

2020-11-22  本文已影响0人  那些年搬过的砖

前言

可能所有人都知道,Redis采用了单线程的模型设计,单线程又是如何做到每秒百万级的客户端请求的呢?4.0+版本之后引入了多线程,是放弃了单线程设计模型吗?实际上无论是早起的单线程模型还是后期的多线程模型,设计上并没有根本性的冲突。

Redis单线程模型

Redis虽然采用了单线程模型,但是依然能够并发的处理任务,关键在于采用了IO多路复用技术,最重要的select函数就是利用多路复用同时监控多个FD(文件描述符)的状态,当有FD可读或可写时通知select进程。
select整体对外表现为阻塞式,但是通过多路复用达到同时处理多个用户请求的目的。

Redis顶层设计理念
另外Redis并不是CPU密集型的服务,性能瓶颈主要是网络延迟或等待客户端数据传输(网络I/O)。
基于以上一些特性,redis采用单线程依然能够满足高并发的处理需求。

Redis多线程模型

Redis在4.0版本之后引入了多线程的概念,但是与之前的单线程模型实际上并不冲突,这些额外的线程是用于一些异步处理操作,比如删除过期数据等。主处理线程依然采用单线程模型。

PS:个人对redis的多路复用理解的比较浅薄,有时间再深入学习操作系统的IO多路复用原理,相信会对redis的多路复用会有更深刻的认识。

上一篇下一篇

猜你喜欢

热点阅读