[001-03-007].第07节:Redis中的管道

news2024/11/15 17:21:09

我的后端学习大纲

我的Redis学习大纲


1、Redis管道的由来:

  • 1.Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤:
    • 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回,通常以阻塞模式等待服务端响应
    • 服务端处理命令,并将结果返回给客户端。

上述两步称为:Round Trip Time(简称RTT,数据包往返于两端的时间)

  • 2.Redis客户端与服务端的交互模型:
    在这里插入图片描述

综上:如果同时需要执行大量的命令,那么就要等待上一条命令应答后再执行,这中间不仅仅多了RTT(Round Time Trip),而且还频繁调用系统IO,发送网络请求,同时需要redis调用多次read()和write()系统方法,系统方法会将数据从用户态转移到内核态,这样就会对进程上下文有比较大的影响了,性能不太好


2、Redis管道是什么:

2.1.解决思路:

  • 1.管道(pipeline)可以一次性发送多条命令给服务端,服务端依次处理完完毕后,通过一条响应一次性将结果返回,通过减少客户端与redis的通信次数来实现降低往返延时时间;
  • 2.pipeline实现的原理是队列,先进先出特性就保证数据的顺序性;
    在这里插入图片描述

2.2.官网:

在这里插入图片描述

2.3.管道定义:

  • pipeline是为了解决RTT往返时间,仅仅是将命令打包一次性发送,对整个redis的执行不造成其他任何影响

批处理命令变种优化措施,类似于Redis中的原生批处理命令mset和mget


3、案例演示:

在这里插入图片描述


4. Pipeline 与原生批量对比:

  • 1.原生批量命令是原子性(如:mset,mget),pipeline是非原子性
  • 2.原生批量命令一次只能执行一种命令,pipeline支持批量执行不同命令
  • 3.原生批命令是服务端实现,而pipeline需要服务端与客户端共同完成

5、Pipeline 与事务对比

  • 1.事务具有原子性,管道不具有原子性
  • 2.管道一次性将多条命令发送到服务器,事务是一条一条发的,事务只有在接收到exec命令后才会执行,管道不会
  • 3.执行事务时会阻塞其他命令的执行,而执行管道中的命令时不会

6、Pipeline 注意事项

  • 1.pipeline缓冲的指令只是会依次执行,不保证原子性,如果执行中指令发生异常,将会继续执行后续的指令
  • 2.使用pipeline组装的命令个数不能太多,不然数据量过大客户端阻塞的时间可能过久,同时服务器也被迫回复一个队列答复,占用很多内存

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2127006.html

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

相关文章

C++类和对象 第二级初阶

目录 面向过程和面向对象 类 类是什么? 类的定义 1.声明和定义都放在类中 2.声明和定义分离 类的访问限定符 类的封装 类的作用域 类的实例化 类对象存储 结构体内存对齐规则 面向过程和面向对象 c语言是面向过程的 c是面向对象的 怎么理解&#xff1f…

外包干了三年,快要废了。。。

先说一下自己的情况,普通本科,在外包干了3年多的功能测试,这几年因为大环境不好,我整个人心惊胆战的,怕自己卷铺盖走人了,我感觉自己不能够在这样蹉跎下去了,长时间呆在一个舒适的环境真的会让一…

【智能终端】HBuilder X 与微信开发者工具集成与调试实战

目录 1. 需求和理解库、框架、平台 1.1 需求 1.2 理解 2.3 库、框架、平台 2.3.1 库(Library) 2.3.2 框架(Framework) 2.3.3 平台(Platform) 2.3.4 总结 2. 使用 HBuilder X 创建第一个 uni-app 应…

MATLAB绘图基础7:单变量图形绘制

参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。 7.单变量图形绘制 7.1 直方图 直方图 ( H i s t o g r a m ) ({\rm Histogram}) (Histogram):一种常用于可视化数据分布的图形类型,用于显示数据集中各数值范围的频率…

STM32G474RE之RTC

STM32G474RE之RTC使用HAL库实现RTC时间配置,以及报警配置,支持双路报警。 1、STM32G474RE的RTC晶振引脚: OSC32_IN为PC14,OSC32_OUT为PC15; 2、Vbat引脚 Vbat引脚是用来给外部晶振LSE和备份寄存器提供电源。当没有“…

9.11 QT ( Day 4)

一、作业 1.Widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> //定时器类 #include <QTime> #include <QtTextToSpeech> //文本转语音类QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEcl…

Redis——通用命令

目录 Redis通用命令Redis中最核心的两个命令getset Redis全局命令keys语法注意事项 existsdel(delete)expirettlredis的key的过期策略是怎么实现的&#xff1f;**了解拓展** type总结 Redis通用命令 Redis的命令非常非常多&#xff0c;所以 1. 掌握常用命令&#xff08;多操作…

ardunio超声波测距实验

工作原理 模块有2个超声波换能器&#xff08;如图所示&#xff09;&#xff0c;一个发出声波&#xff0c;另一个接收物体反射回来的声波&#xff0c;这中间所经过的时间即声波传播的时间&#xff0c;再结合声速就能计算出&#xff1a; 距离 声速 * 时间 2 如何使用HC-SR04模块…

从OracleCloudWorld和财报看Oracle的转变

2024年9月9-12日Oracle Cloud World在美国拉斯维加斯盛大开幕 押注AI和云 Oracle 创始人Larry Ellison做了对Oracle战略和未来愿景的主旨演讲&#xff0c;在演讲中Larry将AI技术和云战略推到了前所未有的高度&#xff0c;从新的Oracle 23c改名到Oracle23ai&#xff0c;到Oracl…

unity3d入门教程一

unity3d入门教程一 2.1-开发环境2.2 新建项目3.1编辑器页面3.2场景3.3添加资源4.1场景视图4.2游戏对象4.3坐标系4.4游戏对象的操作4.5摄像机 2.1-开发环境 https://unity.com/ https://unity.cn/ 安装时若卡住&#xff0c;打开路径自动安装 C:\Users\zhaocai\AppData\Local\T…

信息安全国内外现状及技术要求示例(R155/R156)

国际政策、 法规的现状与趋势 鉴于对交通安全、社会安全甚至国家安全的重要影响&#xff0c;汽车网络安全、数据安全得到各相关国家和地区的高度重视&#xff0c;纷纷出台相关法规、标准。 信息安全法规 R155 法规适用范围覆盖了乘用车及商用车&#xff0c;适用于 M 类、N 类…

北斗盒子:海上安全的智能守护者——落水报警应用案例

海上环境多变&#xff0c;无论是航行还是作业活动&#xff0c;安全始终是最重要的考量。近年来&#xff0c;我国大力发展海上经济&#xff0c;海上作业的增加也带来了溺水事故的频发&#xff0c;给家庭和社会带来沉重的伤痛。据世界卫生组织统计&#xff0c;溺水是世界各地非故…

SQL(结构性查询语句)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、SQL是什么&#xff1f;二、DDL三、DML四、DQL五、DCL总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、SQL是什么&#xff…

【R语言】删除数据框中所有行中没有大于200的数值的行

在Perl中还需要循环按行读入文件&#xff0c;而在R中&#xff0c;一行代码解决问题&#xff1a; df <- df[apply(df, 1, function(x) any(x > 200)), ]这是一个使用apply函数对数据框df进行操作的表达式。apply函数用于对数据框、矩阵或数组进行元素级别的操作。 df&am…

虚拟机安装教程

做一期详细的虚拟机安装教程 VM16.12版本下载地址&#xff1a;联想乐云 VM16版本许可证&#xff1a;ZF3R0-FHED2-M80TY-8QYGC-NPKYF 第一步双击打开安装包&#xff1a; 选择安装位置&#xff0c;选择空间充足的磁盘&#xff0c;一般不建议直接装c 取消勾选 等待安装 输入许可…

sqli-labs靶场自动化利用工具——第6关

文章目录 概要整体架构流程技术细节执行效果小结 概要 Sqli-Labs靶场对于网安专业的学生或正在学习网安的朋友来说并不陌生&#xff0c;或者说已经很熟悉。那有没有朋友想过自己开发一个测试脚本能实现自动化化测试sqli-labs呢&#xff1f;可能有些人会说不是有sqlmap&#…

中信银行信用卡中心社招:TAS人才测评系统题库及通关攻略更新了!

中信银行信用卡中心&#xff08;以下简称“卡中心”&#xff09;是中信银行在深圳设立的对信用卡业务进行统一管理、集中操作、独立核算的专营机构。2002年底&#xff0c;由中信银行总行与中信嘉华银行在深圳合作筹建成立&#xff1b;卡中心自成立伊始&#xff0c;始终坚持“以…

Windows系统一键启动Redis脚本

Redis 是一个开源的、高性能的键值存储数据库&#xff0c;广泛应用于缓存、数据分析、消息队列等场景。无论是在开发环境还是生产环境中&#xff0c;快速启动 Redis 服务都是非常重要的。为此&#xff0c;本文将介绍如何在 Windows 系统中创建一键启动 Redis 的脚本&#xff0c…

网络安全 L2 Introduction to Cryptography 密码学

Definitions 1. crypto - hidden/secret grafia - writing 2. “the science and study of secret writing” 3. Cryptography is the science of protecting data, which provides means of converting data into unreadable form, so that 1. the data cannot be ac…

make 程序规定的 makefile 文件的书写语法(2)

&#xff08;13&#xff09;接着开始一个更复杂的例子&#xff0c;课程的素材 2 &#xff0c;先给出书写 makefile 的框架 &#xff1a; &#xff08;14&#xff09; &#xff08;15&#xff09; 谢谢