我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis的IO多路复用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redis的IO多路复用

一、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多路复用

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis的IO多路复用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

IO多路复用丶基于IO多路复用+sock

IO多路复用指:通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作  IO多路复用作用:    检测多个socket是否已经发生变化(是否已经连接成功/是否已经获取数据)(可读/可
2023-01-30

python之IO多路复用

同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?  不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。  本文讨论的背景是Linux环境下的network IO。  在进行解释之前,首先要说明几个概
2023-01-31

python IO多路复用之select

说起IO操作我们最先想到的就是读写文件。其实python中对有三种IO操作,打开文件,使用socket进行网络连接和系统的标准输入输出sys.stdin和sys.stdout。我们先来看一段socket服务端的代码:import socke
2023-01-31

Linux IO多路复用之epoll网络编程

前言 本章节是用基本的linux基本函数加上epoll调用编写一个完整的服务器和客户端例子,可在Linux上运行,客户端和服务端的功能如下:客户端从标准输入读入一行,发送到服务端服务端从网络读取一行,然后输出到客户端客户端收到服务端
2022-06-04

redis怎么使用多路复用

redis 多路复用使用 epoll 机制,使一个线程能够高效地同时监听多个客户端连接,提高性能、可伸缩性和资源效率。Redis 多路复用Redis 多路复用是一种使一个线程能够同时监听多个文件描述符(FD)并对每个 FD 上的活动做出反
redis怎么使用多路复用
2024-05-21

redis多路复用怎么保证顺序

在使用Redis的多路复用功能时,可以通过以下方法来保证顺序:使用单个连接:虽然Redis支持多路复用,但可以选择在应用程序中只使用一个连接来保证顺序。这样可以避免多个连接之间的乱序操作。使用有序集合:如果需要保证顺序,可以将数据存储在有序
redis多路复用怎么保证顺序
2024-04-09

python3--IO模型,阻塞,非阻塞,多路复用,异步,selectors模块

协程回顾协程 实际上是一个线程执行了多个任务,遇到IO就切换示例:importtimeimportgeventdeffunc():print(eating)g=gevent.spawn(func)time.sleep(1)执行结果--什么都
2023-01-30

PHP+Socket中IO多路复用及实现web服务器的方法是什么

本篇内容介绍了“PHP+Socket中IO多路复用及实现web服务器的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php原生so
2023-07-05

BIO、NIO、IO多路复用模型详细介绍&Java NIO 网络编程

文章目录 前言基本概念BIO过程NIO过程IO多路复用过程Java NIO编程Java NIO 核心概念Java NIO 示例 总结 前言 上文介绍了网络编程的基础知识,并基于 Java 编写了 BIO 的网络编程。我们知道
2023-08-16

flume多路复用怎么写

这篇文章主要介绍“flume多路复用怎么写”,在日常操作中,相信很多人在flume多路复用怎么写问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”flume多路复用怎么写”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-03

Python之I/O多路复用

回顾Socket一、Socket起源:socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些so
2023-01-31

解析多路复用技术

  所谓多路复用是指在同一个信道上同时传输多路信号互不干扰的技术。为了在接收端能够将不同路的信号区分开来,必须使不同的信号具有不同的特征。由于信号直接来自话路,区分信号和区分话路是一致的。最常用的多路复用方式是频分复用(FDM)、时分复用(TDM)和码分复用(CDM)。按频段区分信号的方法叫频分复用;按时隙区分信号的方
解析多路复用技术
2024-04-18

编程热搜

目录