首页 > 数据库 >redis自学(17)poll

redis自学(17)poll

时间:2024-03-13 15:13:14浏览次数:26  
标签:就绪 17 redis pollfd fd 超时 数组 poll

Poll

Poll模式对select模式做了简单改进,但性能提升不明显,部分关键代码如下:

 

 

如果设置超时时间,当超时时间过了,pollfd的fd没有就绪,revents就会赋值为0

IO流程:

① 创建pollfd数组,向其中添加关注的fd信息,数组大小自定义

② 调用poll函数,将pollfd数组拷贝到内核空间,转链表存储,无上限

③ 内核遍历fd,判断是否就绪

④ 数据就绪或超时后,拷贝pollfd数组到用户空间,返回就绪fd数量n

⑤ 用户进程判断n是否大于0

⑥ 大于0 则遍历pollfd数组,找到就绪fd

与select对比:

l Select模式中的fd_set大小固定位1024,而pollfd在内核中采用链表,理论上无上限

l 监听FD越多,每次遍历消耗时间也越久,性能反而会下降

标签:就绪,17,redis,pollfd,fd,超时,数组,poll
From: https://www.cnblogs.com/bulesea/p/18070683

相关文章

  • redis 延迟队列
    参考:https://blog.csdn.net/weixin_42128977/article/details/126152834https://cloud.tencent.com/developer/article/2310463?areaId=106001场景定时任务,比如任务A和任务B是同条流水线上的,当任务A完成了,一个小时后执行任务B我们打车,在规定时间内,没有车主接单,那么平台就......
  • redis集群原理
    Redis集群是Redis数据库的分布式解决方案,用于提高性能、扩展性和容错能力。以下是Redis集群的一些核心原理:数据分片(Sharding):Redis集群通过将数据分片存储在多个节点上来实现水平扩展。每个节点只负责部分数据的存储和处理,从而分担整个系统的负载。主从复制(Master-Slave......
  • ARC173A Neq Number 题解
    ARC173ANeqNumber题目大意正整数\(X\)如果满足以下条件,则称为"Neq数":当\(X\)用十进制符号书写时,没有两个相邻的字符是相同的。例如,\(1\)、\(173\)和\(9090\)是Neq数,而\(22\)和\(6335\)不是。给你一个正整数\(K(1\leqK\leq10^{12})\)。请找出第\(K\)小......
  • Odoo模块从16.0升级至17.0记录
    Odoo第三方模块V16.0>V17.0记录升级后端*.py代码借助OCA的odoo-module-migrator工具#进入容器exec--userroot-itodoo17/bin/bashaptupdateaptinstall-ygit#在容器内执行cd/tmpgitclonehttps://github.com/OCA/odoo-module-migrator.gitcdodoo-module-m......
  • 从CF1941D与1741E初探可达性DP
    Problem-D-Codeforces用记忆化搜索过的,然而DP能快300ms记忆化搜索|\(\texttt{set}\)模拟核心思路一致,都是通过定义一个状态,即在第t次到达第now点来去重剪枝记忆化搜索intn,m,x;std::vector<std::pair<int,char>>step;std::set<int>S;intgetClock(intx,......
  • CYQ.Data 操作 Redis 性能测试:对比 StackExchange.Redis
    前言:前几天,点开自己的博客,看了一下CYQ.DataV5系列 都有哪些文章,发现了一篇2019年写的:CYQ.Data对于分布式缓存Redis、MemCache高可用的改进及性能测试,于是点进去看了看。感觉文章中有些表述存有问题,不过不是重点。重点,看了里面的测试结论,如果四五年过去了,CYQ.Data 低调的......
  • 开源.NET8.0小项目伪微服务框架(分布式、EFCore、Redis、RabbitMQ、Mysql等)
    1、前言为什么说是伪微服务框架,常见微服务框架可能还包括服务容错、服务间的通信、服务追踪和监控、服务注册和发现等等,而我这里为了在使用中的更简单,将很多东西进行了简化或者省略了。年前到现在在开发一个新的小项目,刚好项目最初的很多功能是比较通用的,所以就想着将这些功能......
  • 39_配置redis集群
    配置redis集群三主三从集群设置Master1(6381)Master2(6382)Master3(6383)Slave1(6384)Slave2(6385)Slave3(6386)拉取镜像启动容器dockerpullredis:6.0.8dockerrun-d--nameredis-node-1--nethost--privileged=true-v/dataredis:6.0.8--cluster-en......
  • docker-compose 部署apollo
    apollo-1.9.2docker-compose.yamlversion:'3'services:#模拟一个正常的mysql数据库mysql8:image:mysql:5.7restart:alwayscontainer_name:mysqlports:-3306:3306volumes:-./databases/mysql/logs:/var/log/mysql......
  • 数据库基础--Redis知识体系(掌握Redis,看完这篇文章就够了!)
    1.Redis数据库Redis是一个开源的高性能键值存储数据库,类似字典。通常用作缓存、消息队列和数据存储等用途。mysql,mongodb都是以文件形式存储在磁盘上的,redis数据存在内存中,操作内存的速度远远高于磁盘,并且redis数据最终也可以存储在磁盘上。Redis支持多种数据结构,包括字符串......