当前位置: 首页 > news >正文

Redis和Memcached网络模型详解

1. Redis单线程单Reactor网络模型

在这里插入图片描述

1.1 redis单线程里不能执行十分耗时的流程,不然会客户端响应不及时

解决方法一:
beforesleep里删除过期键操作若存在大量过期键时,会耗费大量时间,redis采用的策略之一就是采用timelimit方案超过阈值就退出下次循环再来处理

解决方法二:
beforesleep里待发给客户端数据太多未发完时不会阻塞在这会创建写文件时间在文件事件流程里发送

解决方法三:
开启TCP_NODELAY提高tcp响应速度,否则发送小包数据时得等200ms超时才会发送

解决方法四:
可开启SO_KEEPALIVE长连接减少不必要的连接建立和销毁过程增加响应速度

1.2 redis单线程里不能执行十分耗时的流程,不然会定时任务执行不及时

解决方法:
在处理文件事件前会查找最近时间事件作为epoll_wait超时依据来确保下一个循环能在定时事件时间到达时及时执行

2. memcached多reactor多线程网络模型

在这里插入图片描述

2.1 工作线程分发策略

主线程接收到新client时,会均匀分发到每个线程,算法比较简单,每次记录上次使用的线程,下一次放到此线程下个线程来保证一定的公平性。
我在其他源码也看到过一种分发策略:根据每个线程里的的活跃连接数并且给每个线程设定一个上限连接数,达到80%时就不在接收新连接;优先将连接分给其他活跃连接更少的线程。

2.2 管道–主线程唤醒工作线程的桥梁

主线程接收到新连接后,通过策略计算出工作线程号后,会向该线程里的管道写段写入’c’,工作线程使用的libevent一直在关注管道读端的事件,一旦主线程写入后工作线程管道读端的事件就会就绪,这时工作线程被唤醒,由工作线程去处理读写任务

3. Nginx多进程网络模型

待完善

http://www.lryc.cn/news/206906.html

相关文章:

  • 二叉搜索树的实现(递归方式)
  • NetCore IIS Redis JMeter 登录压力测试
  • 进一步了解视频美颜SDK:美颜SDK的技术原理
  • 【Qt之QSetting】介绍及使用
  • 基于WebRTC构建的程序因虚拟内存不足导致闪退问题的排查以及解决办法的探究
  • 通过jdk自制https证书并配置到nginx并配置http2
  • 祝贺中国煤科重庆研究院和达索、百世慧PLM项目顺利结项
  • 基于springboot实现数码论坛系统设计与实现系统【项目源码+论文说明】
  • 魔域开服需要什么样的配置
  • 7个好用的PC端设计软件,设计必看!优漫动游
  • 10-动画animation
  • 【带头学C++】----- 1.基础知识 ---- 1.24 逻辑控制语句
  • 微信公众号分销商城源码系统+多元商家+收银台 带完整的搭建教程
  • 排序算法:选择排序,分别用c++、java、python实现
  • 支付宝支付接入流程
  • 管理员|顾问必看!8个Salesforce权限集的最佳实践
  • 【linux进程(六)】环境变量再理解程序地址空间初认识
  • 10步开启SAFe敏捷发布列车
  • 面试题之Vue和React的区别是什么?
  • Linux基础知识——概述和常用文件管理命令
  • 腾讯云创建了jenkins容器,但无法访问
  • C语言的const函数修饰指针
  • EasyExcel使用方式(包含导出图片)
  • redis学习(三)——java整合redis
  • OpenText 安全取证软件——降低成本和风险的同时,简化电子取证流程
  • 【vue】vue前端、生产(线上)环境请求unicloud云服务空间axios报错
  • JVM详解(InsCode AI 创作助手)
  • 华为c语言编程规范
  • SQL Server Management Studio (SSMS)的安装教程
  • React 图片瀑布流