首页 > 数据库 >redis自学(18)epoll

redis自学(18)epoll

时间:2024-03-14 17:25:32浏览次数:17  
标签:就绪 epoll 18 redis FD poll 监听 select

Epoll

epoll模式是对select和poll的改进,它提供了三个函数:

 

 

 

 

 

 

 

Epoll有没有解决之前select或者poll的问题?

  •  select或者poll把要监听的数组或集合拷贝到内核空间,等待FD就绪,就绪后,还要拷贝回用户空间。
  •  epoll把select函数的功能拆分开了,建立eventpoll以后,有需要监听的FD,用epoll_ctl添加进rb_root就行了,之后就会一直在红黑树里监听,不用反复的在用户态和内核态之间反复拷贝;而在返回FD的过程中,只是从内核态的list_head里只拷贝了就绪的FD,数量就少了很多。
  •  相对于select或者poll,epoll返回的FD一定是已经就绪的,不用再遍历判断是否就绪。
  •  Select最多能监听1024个FD,而poll无上限,但只是理论上的,数量太多效率就太低了。而epoll,添加的FD都会放到红黑树上,而红黑树的增删改查的性能不会随着元素的数量增加有太多的波动。

 

 

标签:就绪,epoll,18,redis,FD,poll,监听,select
From: https://www.cnblogs.com/bulesea/p/18073332

相关文章

  • P1829 / SP8099 Crash的数字表格 题解
    P1829/SP8099Crash的数字表格题解莫比乌斯反演、数论分块、杜教筛。题目传送门题意简述求以下式子的值,对\(20101009\)(一个质数)取模:\[\sum\limits_{i=1}^n\sum\limits_{j=1}^m\operatorname{lcm}(i,j)\]\(n,m\le10^7\)。加强:\(n,m\le10^{10}\)。解法莫比乌斯反......
  • Spring-Redis 使用
    基本类型:String存储数据:stringRedisTemplate.opsForValue().set("key","value");获取数据:Stringvalue=stringRedisTemplate.opsForValue().get("key");设置数据的过期时间(单位为秒):stringRedisTemplate.expire("key",60,Tim......
  • 面试知识汇总:Redis简介
    RemoteDictionaryServer(远程字典服务),是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。基本的数据结构:String是Redis最基础的数据结构类型,它是二进制安全的,可以存储图片或者序列化的对象,值最大存储为512M。......
  • epoll用法
    1.创建socketfd和epoll//创建epollfd.intepfd=epoll_create(1); intsockfd=socket(AF_INET,SOCK_STREAM,0);2.绑定端口号structsockaddr_inserveraddr;serveraddr.sin_family=AF_INET;serveraddr.sin_addr.s_addr=htonl(INADDR_ANY);se......
  • Redis高级-删除策略、主从复制、哨兵模式
    1.删除策略1.过期数据redis中的数据特征Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态TTL返回的值有三种情况:正数,-1,-2正数:代表该数据在内存中还能存活的时间-1:永久有效的数据-2 :已经过期的数据或被删除的数据或未定义的数据......
  • 18_观察者模式
    观察者模式是一种行为型设计模式,它定义了对象之间的一对多依赖关系,使得当一个对象的状态发生改变时,其相关依赖对象会自动收到通知并更新。观察者模式有四个主要角色:主题(Subject):定义了观察者的注册、删除和通知方法。主题可以是具体类或接口。具体主题(ConcreteSubject):继承......
  • 使用Docker部署带密码验证的Redis
    使用Docker部署Redis时使用的是默认配置文件不带鉴权需要鉴权可以把设置写到配置文件后通过Dockerfile生成新的镜像redis配置文件#catredis.confbind0.0.0.0port6379timeout0tcp-keepalive300daemonizenodatabases16save9001save30010save6010000#......
  • Redis对象系统
    我们之前介绍了Redis的各种基本数据类型.比如SDS字符串,链表,压缩链表,字典,跳跃表,整数集合等.但是Redis并不是直接使用它们来构建一个数据库的,而是又包装了一层,使用它们构建了对象系统,然后使用这些对象系统来建立数据库系统.Redis中主要的对象类型有:字符串对象列表对象......
  • RedisCluster集群中的插槽为什么是16384个?
    RedisCluster集群中的插槽为什么是16384个?CRC16的算法原理。1.根据CRC16的标准选择初值CRCIn的值2.将数据的第一个字节与CRCIn高8位异或3.判断最高位,若该位为0左移一位,若为1左移一位再与多项式Hex码异或4.重复3至9位全部移位计算结束5.重复将所有输入数据操作完成以上步骤......
  • Redis 八种常用数据类型详解
    夯实基础,这篇文章带着大家回顾一下Redis中的8种常用数据类型:5种基础数据类型:String(字符串)、List(列表)、Set(集合)、Hash(散列)、Zset(有序集合)。3种特殊数据类型:HyperLogLog(基数统计)、Bitmap(位图)、Geospatial(地理位置)。Redis5种基本数据类型Redis共有5种基本数据类......