redis高级篇 redis的IO多路复用与Epoll函数

一  IO多路复用

1.1 IO多路复用*

1.1.1 IO多路复用

I/O: 网络I/O;

多路:多个客户端端连接(连接就是套接字描述符,即socket或channel),指的是多条TCP连接。

复用:用一个进程来处理多条的连接,使用单进程就能够实现同时处理多个客户端的连接。

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

在多路复用IO模型中,会有一个内核线程不断地去轮询多个 socket 的状态,只有当真正读写事件发送时,才真正调用实际的IO读写操作。因为在多路复用IO模型中,只需要使用一个线程就可以管理多个socket,系统不需要建立新的进程或者线程,也不必维护这些线程和进程,并且只有真正有读写事件进行时,才会使用IO资源,所以它大大减少来资源占用。

如下图:

1.1.2 IO多路复用流程(了解)

Redis服务采用Reactor的方式实现文件事件处理器。

所谓I/O多路复用机制,就是通过一种机制,可以监视多个描述符,一旦某个描述符就绪,能够通知程序进行相应的读写操作。这种机制的使用需要select、poll、epoll函数来配合。多个连接共同用一个阻塞对象,应用程序只需要在一个阻塞对象上等待,无需要阻塞等待所有连接,当某条连接有新的数据可以处理时,操作系统通知应用程序、线程,从阻塞状态返回,开始进行业务处理。

如下图:

1.2 同步&异步和阻塞&非阻塞

1.2.1 同步&异步

同步:调用者要一直等待调用结果的通知后,才能进行后续的执行;

异步被调用方先返回应答,让调用者先回去,然后再计算调用结果,计算完成最终结果后再通知并返回给调用方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值