Spring Cloud微服务实战 打造企业级优惠券系统 2-6 Redis的I/O模型(概念)(面试)

0    课程地址

https://coding.imooc.com/lesson/380.html#mid=28222

1    个人收获

多路复用场景

2    课程内容

2.1  为何使用多路复用

redis 在单线程中,所有操作都是线性操作,所以i/o操作堵塞后,将不能返回。在多个客户端的时候,导致整个进程堵塞无法对其他客户端服务。(详细见上节)

2.2  多路复用场景

Blocking I/o 阻塞IO:当read/write对某一个文件描述符(FD)进行读写时,如果当前对FD不可读或不可写,则服务阻塞。对于处理多个客户端应用时,不选择此模型

2.3  Redis的Reactor设计模式

 

 每一个网络连接对应一个文件描述符(客户端),redis客户端共同对redis服务器发起操作,文件处理器使用io多路复用模块监听多个文件描述符,当socket的就绪状态时(可读可写连接),文件处理器回调文件描述符绑定的事件处理器。虽然事件处理器在单线程运行,但是通过io多路复用实现同时对多个文件描述符的监控,提高了网络通信的性能。

2.4  Redis多个多路复用函数,会如何选择?

redis优先选择时间复杂度低的io多路复用函数作为底层实现,如果没有相关的高级函数epoll,qq等,会选择select作为备选方案。

2.5  为何生产上一般不用windows作为redis服务端?

windows一般只有select函数,最多只能同时服务1024个文件描述符,所以一般不会部署在windows上。

诸葛
原文地址:https://www.cnblogs.com/1446358788-qq/p/14260474.html