关于I/O多路复用(事件驱动),首先要理解的是,操作系统为你提供一个功能,当你的某个socket可读或可写的时候,它可以给你一个通知。这样当配合非阻塞的socket使用时,只有当系统通知我哪个描述符可读了,我才去执行read操作,可以保证每次read都能读到有效数据而不做纯返回或无用功,写操作类似,操作系统的这个功能是通过select/poll/epoll/kqueue之类的系统调用函数来实现,这些函数都可以见识多个描述符的读写就绪状况,这样,多个描述符的I/O操作都能在一个线程内并发交替的顺序完成,这就叫着I/O多路复用,“多路”指的是多个网络连接,“复用”指的是复用同一个Redis处理线程,采用多路I/O复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络I/O的时间消耗),且Redis在内存中操作数据的速度非常快,也就是说内存内的操作不会成为影响Redis性能的瓶颈,所以Redis有很高的吞吐量。

【Redis】②NIO在redis中的应用和演变
多路复用的演变

 

 

相关文章: