Redis之epoll和IO多用复用

本文详细解析了Redis如何利用epoll实现IO多路复用,介绍了Reactor模型的组成部分,并对比了同步/异步和阻塞/非阻塞的区别。此外,还概述了Linux的五种IO模型,包括BIO、NIO、IO多路复用(如select、poll和epoll)以及信号驱动和异步IO。

一、redsi的IO多路复用

redis利用epoll来实现IO多路复用,将连接信息和事件放入队列中,一次放到文件事件分派器,事件分派器将事件分发给事件处理器。

IO多路复用,使用的是linux内核函数,它的使用有三种select、poll、epoll,redis使用的就是epoll进行实现。

在redis中,多个客户端同时进行连接,redis使用epoll,把各个客户端的事件放到队列中,然后又事件派发器找到对应的工作单元。IO多路复用解决就是防止一个读写导致整个进程的阻塞

Redis服务采用Reactor的方式来实现文件事件处理器,它的组成有4个部分:

  • 多个套接字
  • IO多路复用程序
  • 文件事件分派器
  • 事件处理器

因为文件事件分派器队列的消费是单线程的,所以redis才叫单线程模型。

IO就网络IO,复用是多个连接、复用就一个或一组线程处理TCP连接,总结一句话就是一个服务进程可以同时处理多个套接字描述符(FD)。

二、同步\异步和阻塞\非阻塞

1、同步\异步

  • 同步:调用者需要等待结果,才能执行后续操作
  • 异步:是指被调用者返回应答结果,先让调用者回去,然后在处理结果,完成后在通知调用者

同步、异步的讨论对象是被调用者,重点在于获得调用结果的消息通知上。

2、阻塞\非阻塞

  • 阻塞:调用者一直等待切别的事情都不做,当前线程会被挂起,什么都
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值