Redis的IO多路复用
admin
2023-02-07 14:20:03
0

一、linux的IO复用函数

Redis的IO多路复用

同一个线程内,多个描述符的IO操作,能够并发交替地顺序执行。

epoll只提供三个函数:

int epoll_create(int size); #创建epoll句柄

int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);

关联被监听的事件和epool句柄(可以通过op参数来增加,删除和修改关联关系)

第一个参数epfd,为epoll_create()的返回值,

第二个参数op,表示关联关系:EPOLL_CTL_ADD(增)EPOLL_CTL_MOD(改)EPOLL_CTL_DEL(删)
第三个参数fd,是需要监听的fd,

第四个参数event,告诉内核需要监听的具体事件:EPOLLIN(可读)EPOLLOUT(可写)EPOLLPRI(紧急可读)EPOLLERR(错误)EPOLLHUP(挂断)EPOLLET(触发模式ET或LT)EPOLLONESHOT(只监听一次)

此处可以设置,事件对应的回调函数。

int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout);

如果没有epoll_ctl中监听的事件产生,就会阻塞在这里,一直等到监听事件产生,或者等到超时。

如果有epoll_ctl中监听的事件,就执行具体的事件处理回调函数。


epoll保证了每个fd在整个过程中只会拷贝一次,从内核空间到用户空间。

二、redis的IO多路复用

Redis的IO多路复用

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

事件处理器对不同的事件,进行处理。

main –> aeMain –> while { aeProcessEvents –> aeApiPoll –> epoll_wait }

Redis的IO多路复用

相关内容

热门资讯

【第一消息】“天天微友炸/金/... 有 亲,根据资深记者爆料天天微友炸/金/花是可以开挂的,确实有挂(咨询软...
终于了解“开心武汉花到底是不是... 家人们!今天小编来为大家解答开心武汉花透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里买...
【第一消息】“钱潮十三水开挂器... 网上科普关于“钱潮十三水有没有挂”话题很是火热,小编也是针对钱潮十三水作*弊开挂的方法以及开挂对应的...
今日重磅消息“极速官方游戏辅助... 网上科普关于“极速官方游戏有没有挂”话题很是火热,小编也是针对极速官方游戏作*弊开挂的方法以及开挂对...
今日重磅消息“功夫熊猫金花是不... 网上科普关于“功夫熊猫金花有没有挂”话题很是火热,小编也是针对功夫熊猫金花作*弊开挂的方法以及开挂对...
今日重大消息“天天摸麻将真的有... 有 亲,根据资深记者爆料天天摸麻将是可以开挂的,确实有挂(咨询软件无需打...
重磅消息“家家乐牌吧是不是有挂... 有 亲,根据资深记者爆料家家乐牌吧是可以开挂的,确实有挂(咨询软件无需打...
今日重大通报“皇豪互娱到底是不... 有 亲,根据资深记者爆料皇豪互娱是可以开挂的,确实有挂(咨询软件无需打开...
风声|《阿凡达3》遇冷,好莱坞... 作者丨曾于里文化批评家《阿凡达3》自上映以来,票房表现却让人失望。作为全球影史票房冠军的续集之作,没...
今日重磅消息“山西互动是不是有... 家人们!今天小编来为大家解答山西互动透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...