Redis 是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度, I/O 多路复用模型主要就是实现了高效的网络请求
Liux系统为了提高 IO 效率,会在用户空间和内核空间都加入缓冲区:
阻塞 IO 模型中,用户进程在两个阶段中都是阻塞状态
非阻塞 IO 模型中,用户进程在第一个阶段是非阻塞,在第二个阶段是阻塞状态。虽然是非阻塞,但性能并没有得到提高,而且忙等级制会导致 CPU 空转,CPU 使用率暴增
文件描述符:简称 FD,是一个从 0 开始递增的无符号整数,用来关联 Linux 中的一个文件。在 Linux 中,一切接文件,例如常规文件、视频、硬件设备等,当然接包括网络套接字(Socket)。
IO 多路复用是利用单个线程来同时监听多个 Socket,并在某个 Socket 可读、可写时得到通知,从而避免无效的等待,充分利用 CPU 资源,不过监听 Socket 的方式、通知方式又有多种实现,常见的有: