redis单线程和多线程的理解
面试官:redis是单线程还是多线程的
我:单线程
面试官:出门左转
问题分析
首先从不同的方面去分析这个问题
redis的单线程理解
redis的单线程指的是:redis客户端与服务端的交互,分为三个阶段,发送请求,执行命令、返回响应。在这三个阶段中,在redis执行请求命令的核心模块是单线程的。所以所有到达服务端的命令不会立马执行,而是进入一个队列中。这就是redis的单线程模型。而不是说redis整个实例就只有一个线程,redis其他模块也有各自的线程。
知识点1 scoket 套接字
应用层和数据层进行交互时,这里需要提到网络分层结构,网络大致可以分为7层、5层或者4层。
7层是指OSI七层协议模型,主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。
5层体系结构包括:应用层、运输层、网络层、数据链路层和物理层。
4层是指TCP/IP四层模型,主要包括:应用层、运输层、网际层和网络接口层
socket套接字是一个抽象层,抽象位于应用层和ip层之间,通过它进行数据的发送以及接收
over
redis服务器也是通过socket与其他服务器或者客户端进行连接。服务器与客户端或其他服务器的通信会产生相应的文件事件,而服务器通过监听并处理这些事件来完成一系列网络通信操作。
redis单线程为什么处理速度这么快 而且具有很高的吞吐量
这主要取决于redis的操作都是在内存中进行,同时还取决于redis的I/O多路复用
“多路”指的是多个网络连接,“复用”指的是复用同一个Redis处理线程
系统通过监听多个socket,就可以实现多个请求在一个线程中交替执行