Redis和Memcached网络模型详解

news2024/11/20 2:23:09

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.coloradmin.cn/o/1137966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2011-2021年“第四期”数字普惠金融与上市公司匹配(根据城市匹配)/上市公司数字普惠金融指数匹配数据

2011-2021年“第四期”数字普惠金融与上市公司匹配(根据城市匹配)/上市公司数字普惠金融指数匹配数据 1、时间:2011-2021年 指标:指标:股票代码、年份、行政区划代码、行业名称、行业代码、所属省份、所属城市、数字…

澳大利亚专线的清关时效

随着全球贸易的不断发展,越来越多的企业和个人开始选择通过海运、空运等物流方式将货物运送到世界各地。而在这些运输方式中,澳大利亚专线以其快速、高效的特性受到了广大客户的青睐。本文将为您详细介绍澳大利亚专线的清关时效。 一、澳大利亚专线的定义…

Vben开源添加本地路由(不用显示在菜单的路由)

1.在src\router\routes\modules下创建一个article.ts import type { AppRouteModule } from //router/types;import { LAYOUT } from //router/constant; import { t } from //hooks/web/useI18n;export const article: AppRouteModule {path: /article,name: Article,compon…

疫情集中隔离

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…

数字人成品牌营销流量密码?看数字人花样赋能品牌

在第十二届李曼中国养猪大会暨世界猪业博览会上,嘉吉动物营养推出了首个数字人产品星推官,在现场数字人结合动捕设备,向观众实时介绍品牌的全明星产品,同时与观众进行实时互动,吸引了众多参展观众的驻足,为…

K8s安装部署-----二进制安装部署

目录 前言 一、操作系统初始化配置 二、部署 etcd 集群 1、在master01节点操作 2、在 node01 节点上操作 3、在 node02 节点上操作 4、查看集群状态 二、部署docker引擎 三、部署 Master 组件 1、准备证书 2、准备二进制文件、token 3、启动kube-apiserver服务 4、…

0基础学习PyFlink——用户自定义函数之UDTF

大纲 表值函数完整代码 在《0基础学习PyFlink——用户自定义函数之UDF》中,我们讲解了UDF。本节我们将讲解表值函数——UDTF 表值函数 我们对比下UDF和UDTF def udf(f: Union[Callable, ScalarFunction, Type] None,input_types: Union[List[DataType], DataTy…

macOS Sonoma 14.1正式版发布 改善Apple Music界面 新增保修状态显示

10月26日消息,苹果今天为 macOS Sonoma 推出了 14.1 版本更新,本更新主要改善了 Apple Music 界面,设置中新增保修状态,并修复了多项错误内容。 经过几周的用户测试,Apple 正式向所有 Mac 用户发布了 macOS Sonoma 14.…

【代码随想录01】数组总结

抄去吧,保存去吧!

p5.js 3D图形-立方体

本文简介 带尬猴,我嗨德育处主任 前面写了几篇 p5.js 文章 都还没涉及到3D图形,但其实 p5.js 是提供了基础的3D图形的。 本文就从最简单的立方体讲起,并做几个小demo和各位工友一起掌握立方体的用法。 立方体的基础用法 在 p5.js 里使用 b…

智慧矿山AI算法助力煤矿安全:人员越界识别精准迅速

煤矿作为一种危险性较高的工业领域,安全管理一直是煤矿企业的重要任务。传统煤矿安全管理主要依靠人工巡逻及视频监控等手段,但这些方法往往存在人力不足、盲区多等问题,无法实时监控和预警,难以有效避免事故的发生。随着人工智能…

如何在linux服务器上安装Anaconda与pytorch,以及pytorch卸载

如何在linux服务器上安装Anaconda与pytorch,以及pytorch卸载 1,安装anaconda1.1 下载anaconda安装包1.2 安装anaconda1.3 设计环境变量1.4 安装完成验证 2 Anaconda安装pytorch2.1 创建虚拟环境2.2 查看现存环境2.3 激活环境2.4 选择合适的pytorch版本下…

FL Studio水果2023体验版如何破解?

FL Studio是一款非常专业的水果工具,软件功能齐全,拥有编曲、剪辑、录音、混音等功能,可以满足用户的各种音乐制作需求。软件已经成功破解,全中文的软件界面,去除了试用时间限制,有需要的快来下载吧&#x…

《动手学深度学习 Pytorch版》 10.6 自注意力和位置编码

在注意力机制中,每个查询都会关注所有的键-值对并生成一个注意力输出。由于查询、键和值来自同一组输入,因此被称为 自注意力(self-attention),也被称为内部注意力(intra-attention)…

react-typescript-demo

1.使用 Context 来存储数据

rabbitMQ入门指南:管理页面全面指南及实战操作

文章目录 1. 引言2. RabbitMQ 管理页面的概览3. 探索 RabbitMQ 管理页面的主要功能3.1 连接3.2 通道3.3 交换机3.4 队列3.5 生产者3.6 消费者 4. RabbitMQ 的实战例子4.1 创建虚拟机4.2 连接和通道4.3 建立交换机4.3.1 交换机类型4.3.2 创建一个交换机 4.4 创建队列4.4.1 队列类…

海外广告投放保姆级教程,如何使用Quora广告开拓新流量市场?

虽然在Quora 上学习广告相对容易,但需要大量的试验和错误才能找出最有效的方法。一些广告技巧可以让您的工作更有效率。这篇文章将介绍如何有效进行quora广告投放与有价值的 Quora 广告要点,这将为您节省数万美元的广告支出和工作时间!往下看…

五大绩效指标,为企业新媒体矩阵管理注入新动力

⭐关注矩阵通服务号,探索企业新媒体矩阵搭建与营销策略 新媒体矩阵的建设运营是为了能实现企业确定的业务目标。 那如何才能让推动最后业务目标的实现? 对于企业来说,可以将业务目标拆解为短期绩效目标,通过适当调整短期指标来保证…

【Java 进阶篇】Java HTTP 请求消息详解

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的应用层协议,广泛用于构建互联网应用。在Java中,我们经常需要发送HTTP请求来与远程服务器进行通信。本文将详细介绍Java中HTTP请求消息的各个部分,包括请求行、…

spring-初识spring

初识spring Spring简介 初识spring一、Spring 特性二、IOC容器(反转控制)1、IOC容器1.1、IOC思想1.2、IOC容器在Spring中的实现 2、基于XML管理bean2.1入门案例2.2获取bean2.3依赖注入(DI)2.3.1set方法注入2.3.1构造器注入 2.4 为类类型属性赋值2.4.1 引用外部已声明bean2.4.2 …