❒ redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度,I/0多路复用模型主要就是实现了高效的网络请求。
✔ 用户空间和内核空间
✔ 常见的IO模型
☑ 阻塞IO(Blocking IO)
☑ 非阻塞IO(Nonblocking IO)
☑ I0多路复用(IO Multiplexing)
❒ redis网络模型
用户空间和内核空间,Linux系统中一个进程使用的内存情况划分两部分: 内核空间、用户空间
✔ 用户空间只能执行受限的命令(Ring3),而且不能直接调用系统资源必须通过内核提供的接口来访问
✔ 内核空间可以执行特权命令(Ring0),调用一切系统资源
❒ 交互样例
✔ 发送数据:用户空间(用户缓冲区)→ [等待数据就绪] 内核空间(内核缓冲区)→ 硬件(硬件设备)
✔ 接收数据:用户空间(用户缓冲区)← [读取数据] 内核空间(内核缓冲区)← [准备数据] 硬件(硬件设备)
❒ Linux系统为了提高IO效率,会在用户空间和内核空间都加入缓冲区
✔ 写数据时,要把用户缓冲数据拷贝到内核缓冲区,然后写入设备
✔ 读数据时,要从设备读取数据到内核缓冲区,然后拷贝到用户缓冲区