锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

后端开发【一大波有用知识】—Redis,Memcached,Nginx网络组件

时间:2022-10-24 23:00:06 卡连接器组件

reator网络编程

epoll使用管理器管理多个连接被称为事件管理器。

int clientfd=accept(listenfd,addr,sz); clientfd ==-1 && erro==EWOLDBLOCK ///表示全连接中的连接是空的  int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen); error == EINPROGRESS ///正在建立连接 error == EISCONN  //成功建立连接       
  • 关闭读端 read = 0

  • 关闭写端 write = -1 && errno =EPIPE

  • io函数像read只能检测一个fd具体状态可以检测到相应的状态。

  • io多路复用可以检测多个fd对应的状态,只能检测可读、可写、错误、断开一般等信息。

  • getsockopt 也可以检测错误。

阻塞IO 和 非阻塞IO

  • 阻塞网络线程

  • 连接的fd阻塞属性决定了io函数是否堵塞

  • 具体差异如下:io当数据未到达时,函数是否立即返回。

///默认情况下,fd设置非阻塞的方法如下: int flag=fcntl(fd,F_GETFL,0); fcntl(fd,F_SETFL,flag | O_NONBLOCK);

  • timeout == 0 是非阻塞效果,检测后立即返回。

  • timeout == -1 是永久阻塞

  • timeout == 1000

C 开发学习地址:C/C Linux服务器开发高级架构师/Linux后台架构师

想学习C 工程、高性能、分布式、简单。性能调优、TCP,协程,Nginx源码分析Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,Linux内核,P2P,K8S,Docker,TCP/IP,协程,DPDK 如有必要,可点击以下视频学习资料:C 架构师学习资料 进去自取

epoll_create 会去创建红黑树和就绪队列。

epoll_ctl 会注册事件,建立回调关系。当事件被触发时,epoll_ctl 会将fd从红黑树到就绪队列。

问:代码第9行能监控写事件吗?

答:不,因为一开始写缓冲区是空的,总会触发可写。

编程细节、返回值和错误代码

读端关闭。

建议read()函数使用非阻塞io,因为错误会马上回来,不会卡在这里影响别人。

将数据写入缓冲区,协议栈将数据发送到对端。

redis、nginx、memcached reactor具体使用

redis-6.0支持IO多线程,包装在networking.cz中。

参考资料

推荐零声学院免费公开课,个人认为老师讲得好,和大家分享:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章