彻底理解 IO 多路复用实现机制( 七 )


Redis IO多路复用技术redis 是一个单线程却性能非常好的内存数据库 ,主要用来作为缓存系统 。redis 采用网络IO多路复用技术来保证在多连接的时候 ,系统的高吞吐量 。
为什么 Redis 中要使用 I/O 多路复用这种技术呢?
首先 , Redis 是跑在单线程中的 , 所有的操作都是按照顺序线性执行的 , 但是由于读写操作等待用户输入或输出都是阻塞的 , 所以 I/O 操作在一般情况下往往不能直接返回 , 这会导致某一文件的 I/O 阻塞导致整个进程无法对其它客户提供服务 , 而 I/O 多路复用 就是为了解决这个问题而出现的 。
redis的io模型主要是基于epoll实现的 , 不过它也提供了 select和kqueue的实现 , 默认采用epoll 。
select、poll、epoll之间的区别看完上面的文章 , 相信你可以回答出来了 。
epoll 水平触发(LT)与 边缘触发(ET)的区别?EPOLL事件有两种模型:

  • Edge Triggered (ET) 边缘触发只有数据到来,才触发,不管缓存区中是否还有数据 。
  • Level Triggered (LT) 水平触发只要有数据都会触发 。
看完上面的文章 , 相信你可以回答出来了 。
文章持续更新 , 可以微信搜一搜「 一角钱技术 」第一时间阅读 ,本文 GitHub org_hejianhui/JavaStudy已经收录 , 欢迎 Star 。


推荐阅读