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

Redis---事务管道

目录

一、Redis的事务是什么?

1.1 Redis和关系型数据库事务的区别

 二、怎么玩Redis事务?

 2.1  正常执行:

 2.2 放弃事务

 2.3  全体连坐

 2.4  冤头债主

 2.5  watch监控

三、管道

3.1  为什么会引入管道这个概念呢?我们首先来看一道面试题

3.2   管道是什么?

 3.3  管道的使用演示

3.4  管道小总结


一、Redis的事务是什么?

  • 可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化, 按顺序地串行化执行而不会被其他命令插入,不许加塞
  • 一个队列中,一次性、顺序性、排他性的执行一系列命令

1.1 Redis和关系型数据库事务的区别

 二、怎么玩Redis事务?

常用命令:

 2.1  正常执行:

 2.2 放弃事务

 2.3  全体连坐

 2.4  冤头债主

 2.5  watch监控

redis为了保证他的高性能,他加锁的时候假如是用了悲观锁,那么他的性能肯定是会受影响的,使用他就使用了乐观锁。

 乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。

乐观锁策略:          提交版本必须   大于   记录当前版本才能执行更新

正常:就是没有加塞的情况

相当于就是简单的加锁再解锁。

 有加塞:

 小补充:

当EXEC一执行的时候,所有的监控锁都会被取消,当客户端连接丢失的时候,监控锁也会被取消。(可以理解为防止死锁)

三、管道

3.1  为什么会引入管道这个概念呢?我们首先来看一道面试题

如何优化频繁命令往返造成的性能瓶颈?

  • Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。一个请求会遵循以下步骤:

    • 客户端向服务端发送命令分四步(发送命令→命令排队→命令执行→返回结果),并监听Socket返回,通常以阻塞模式等待服务端响应
    • 服务端处理命令,并将结果返回给客户端。
    • Round Trip Time(简称RTT,数据包往返于两端的时间)

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

我们上面可以知道,如果服务端多次和客户端之前就行往返的话,就会多很多RTT时间,我们为了改善这个就可以用到管道

管道的原理就是一次性打包多条数据,然后服务端只用给我们一条回复结果就行了,这个mset  k1  v1  , k2  v2,k3,v3,要注意的是mset远远不能代替管道的作用,因为mset只是能够对string类型,如果多种类型的话,就还得是管道

3.2   管道是什么?

管道(pipeline)可以一次性发送多条命令给服务端。

  • 服务端依次处理完完毕后,通过一条响应一次性将结果返回,通过减少客户端与redis的通信次数来实现降低往返延时时间
  • pipeline实现的原理是队列,先进先出特性就保证数据的顺序性。

 3.3  管道的使用演示

 有了管道之后,我们还可以解决工作中的一些问题:老板让你往redis中插入10w条数据,我们就可以写成10个文件,然后分10批次插入,可以这样来测试redis的性能

3.4  管道小总结

Pipeline 与原生批量

  • 原生批量命令是原子性(如:mset,mget),pipeline是非原子性

  • 原生批量命令一次只能执行一种命令,pipeline支持批量执行不同命令

  • 原生批命令是服务端实现,而pipeline需要服务端与客户端共同完成

Pipeline 与事务对比

  • 事务具有原子性,管道不具有原子性
  • 管道一次性将多条命令发送到服务器,事务是一条一条发的,事务只有在接收到exec命令后才会执行,管道不会
  • 执行事务时会阻塞其他命令的执行,而执行管道中的命令时不会
  • Pipeline 注意事项
    • pipeline缓冲的指令只是会依次执行,不保证原子性,如果执行中指令发生异常,将会继续执行后续的指令
    • 使用pipeline组装的命令个数不能太多,不然数据量过大客户端阻塞的时间可能过久,同时服务器也被迫回复一个队列答复,占用很多内存

相关文章:

Redis---事务管道

目录 一、Redis的事务是什么? 1.1 Redis和关系型数据库事务的区别 二、怎么玩Redis事务? 2.1 正常执行: 2.2 放弃事务 2.3 全体连坐 2.4 冤头债主 2.5 watch监控 三、管道 3.1 为什么会引入管道这个概念呢?我们首先来看一…...

Python的内置数据类型(通过故事来学习)

有一天,小李在学习Python语言时,听到了一个关于内置数据类型的故事。 Python内置了很多数据类型,比如整数、浮点数、字符串、布尔值等等。这些数据类型可以帮助我们更方便地处理数据,提高代码的效率。 小李很好奇,就…...

继瑞吉外卖后的又一个项目——SpringBoot+Vue的前后端博客系统

文章目录 博客系统项目介绍前言项目演示前台演示后台演示 组织结构后端组织结构前端组织结构 技术选型前端技术后端技术架构图系统架构图业务架构图 模块介绍前端模块后端模块 环境搭建开发工具开发环境项目运行 未完待续结语 博客系统项目介绍 前言 本项目已开源在Gitee 后端…...

2023暑期实习历程总结

一.前言 Hello 大家好久不见,已经三个月左右没有更新了,那我这三个月在干什么呢?自2023年3月中旬开始到现在五月底这期间接近三个月的时间里,我一直在进行2023暑期实习的投递和面试。这期间投递了包括各大中厂(阿里&am…...

UART-STM32

UART-STM32 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 第一步,开启时钟,把需要用的USART和GPIO的时钟打开 第二步,GPIO初始化,把TX配置成复用输出,RX配置成输入 第三步,配置USART,直接使…...

jetson nano csi摄像头 tensorrt 运行yolov8检测

jetson nano csi摄像头 tensorrt 运行yolov8检测 基于原始onnx模型的tensorrt预测1. 在本地电脑训练环境下将onnx模型导出yolov8 导出onnx 模型2. 在jetson nano下 转换到tensorrt模型配置好环境后 使用trtexec 生成engine3. 使用python3 tensorrt 读取csi摄像头进行预测修改on…...

提升国际品牌影响力:小企业海外网红营销实战指南

在当今数字化时代,小企业们越来越意识到海外市场的巨大潜力。与此同时,海外网红的崛起也为小企业提供了一个独特的机会,通过与他们合作,迅速拓展国际市场并吸引更多目标受众的关注。然而,对于许多小企业来说&#xff0…...

从零开始的力扣刷题记录-第三十九天

力扣每日四题 228. 汇总区间-简单1431. 拥有最多糖果的孩子-简单637. 二叉树的层平均值-简单49. 字母异位词分组-中等总结 228. 汇总区间-简单 题目描述: 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也…...

PDPS教程:机器人工作站导出为JT格式文件操作方法

目录 功能简介 功能注意事项 导出JT格式文件操作 导出JT格式文件查看 功能简介 PDPS软件不仅能够从外部导入JT格式的模型文件,还能够将创建好的机器人工作站/生产线导出为JT格式的模型文件。这个能够导出JT格式文件的功能就是“Export JT”命令。 使用“Expor…...

【面试】为什么Mysql用B+树做索引而不用B-树或红黑树

文章目录 前言一、B树只有叶节点存放数据,其余节点用来索引,而B-树是每个索引节点都会有Data域。二、那么Mysql如何衡量查询效率呢?三、B树相对于红黑树的区别 前言 原因如下: B树能显著减少IO次数,提高效率B树的查询…...

教你如何选择真正有用的防关联指纹浏览器

从事亚马逊、eBay、Shopify等电商平台的卖家都知道,如果我们需要在这些平台上经营多个店铺,需要使用多个账号为店铺进行评价,在Facebook和Instagram上做SEO和广告,通常也需要使用一个防关联指纹浏览器。 防关联指纹浏览器主要解决…...

某程序员哀叹:月薪四五万,却每天极度焦虑痛苦,已有生理性不适,又不敢裸辞,该怎么办?

高薪能买来快乐吗? 来看看这位程序员的哀叹: 实在是扛不住了,每天都在极度焦虑和痛苦中度过,早上起来要挣扎着做心理建设去上班,已经产生生理性的头晕恶心食欲不振。有工作本身的原因,更多是自己心态的问…...

不愧是腾讯出来的,太厉害了...

前段时间公司缺人,也面了许多测试,一开始瞄准的就是中级水准,当然也没指望能来大牛,提供的薪资在15-20k这个范围,来面试的人有很多,但是平均水平真的让人很失望。看了简历很多上面都是写有4年工作经验&…...

2023年上半年系统集成项目管理工程师上午真题及答案解析

1.在( )领域我国远末达到世界先进水平,需要发挥新型国家体制优势,集中政府和市场两方面的力量全力发展。 A.卫星导航 B.航天 C.集成电路 D.高铁 2.ChatGPT 于2022年11月30日发布,他是人工智能驱动( )。 …...

psd文件丢失了怎么恢复?分享原因及对应恢复方法

PSD文件在设计行业中非常重要。但是,不幸的是,有时这些文件可能会因多种原因而丢失。那么在未备份PSD文件的情况下,PSD文件丢失了怎么恢复呢?如果您遇到了这种问题,不要惊慌,在本篇文章中,我们将…...

【Netty】 工作原理详解(十一)

文章目录 前言一、Netty 模型二、代码示例2.1、引入Maven依赖2.2、服务端的管道处理器2.3、服务端主程序2.4、客户端管道处理器2.5、客户端主程序2.6、测试运行 总结 前言 回顾Netty系列文章: Netty 概述(一)Netty 架构设计(二&…...

SQL面试必备:100道高频考题解析

前言 在众多IT职场中,SQL技术一直是一个非常重要的技能点。如果你正在准备SQL相关的面试,那么这份“SQL面试 100 问”绝对是你不能错过的宝藏! 这份清单涵盖了100道高频考题,从基础知识到复杂应用都有所涉及,帮助你全…...

基于区域的图像分割

文章目录 基于区域的图像分割基本原理常用的算法实现步骤示例代码结论 基于区域的图像分割 基于区域的图像分割是数字图像处理中常用的一种方法,它通过将图像中的像素分配到不同的区域或对象来实现图像分割的目的。相比于基于边缘或阈值的方法,基于区域…...

【Python json】零基础也能轻松掌握的学习路线与参考资料

Python中的JSON模块主要用于将Python对象序列化成JSON数据或解析包含JSON数据的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。由于JSON在Web应用中的广泛使用…...

大数据开发之Hive案例篇8-解析XML

文章目录 一. 问题描述二. 解决方案2.1 官方文档2.2 XML格式不规范 一. 问题描述 今天接到一个新需求&#xff0c;hive表里面有个字段存储的是XML类型数据 数据格式: <a><b>bb</b><c>cc</c> </a>二. 解决方案 2.1 官方文档 遇到不懂的…...

从零开始:人工神经网络入门实战 - 用TensorFlow实现MNIST手写数字识别

1. 引言&#xff1a;为什么MNIST是神经网络的"Hello World"&#xff1f; 当你第一次接触编程时&#xff0c;通常会写一个"Hello World"程序。在深度学习领域&#xff0c;MNIST手写数字识别就是那个经典的"Hello World"&#xff01;这个由美国国…...

2025届必备的五大降AI率神器实测分析

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 人工智能生成文本普及起来后&#xff0c;各种各样的AI检测系统被创造出来&#xff0c;为了应…...

终极Label Studio数据标注指南:从零开始构建AI训练数据集

终极Label Studio数据标注指南&#xff1a;从零开始构建AI训练数据集 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/la/label-studio …...

抖音视频下载终极实战指南:一键无水印批量下载免费工具

抖音视频下载终极实战指南&#xff1a;一键无水印批量下载免费工具 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback supp…...

Xamarin.Macios实战教程:10个技巧提升你的开发效率

Xamarin.Macios实战教程&#xff1a;10个技巧提升你的开发效率 【免费下载链接】xamarin-macios .NET for iOS, Mac Catalyst, macOS, and tvOS provide open-source bindings of the Apple SDKs for use with .NET managed languages such as C# 项目地址: https://gitcode.…...

[具身智能-218]:针对不同编程语言和应用场景,AI自动编程擅长与不擅长之处?

AI自动编程的能力在不同编程语言和应用场景下表现出显著差异。选择合适组合&#xff0c;能让AI成为强大的“加速器”&#xff0c;反之则可能带来风险。 核心原则是&#xff1a;AI对主流语言和标准化任务的支持最好&#xff0c;而在处理底层、高性能或复杂业务逻辑时则需要人工…...

单轮车辆ABS防抱死控制Simulink仿真模型 1.可控制切换冰雪路面和开关ABS系统控制 2.仿真输出时域下的车速/轮速/制动距离/滑移率/控制信号曲线,可以配置车重/滑移率-摩擦系数曲线/主缸

单轮车辆ABS防抱死控制Simulink仿真模型 1.可控制切换冰雪路面和开关ABS系统控制 2.仿真输出时域下的车速/轮速/制动距离/滑移率/控制信号曲线&#xff0c;可以配置车重/滑移率-摩擦系数曲线/主缸压力/制动效能因数等参数。 3.有基础说明文档单轮车辆ABS防抱死控制Simulink仿真…...

6个核心步骤构建自定义Minecraft地形世界

6个核心步骤构建自定义Minecraft地形世界 【免费下载链接】ReTerraForged a 1.19 port of https://github.com/TerraForged/TerraForged 项目地址: https://gitcode.com/gh_mirrors/re/ReTerraForged ReTerraForged是一款专为Minecraft 1.19版本设计的高级地形生成模组&…...

openclaw行为式AI重构:从昂贵Token到高效对象协作

从昂贵的token消耗到高效的对象协作,重新设计行为式AI的核心架构 问题诊断:为什么当前行为式AI如此“昂贵”? OpenClaw等工具的核心架构依赖生成式大模型作为“大脑”,通过反复的推理-行动循环完成任务。这种设计导致: 高Token消耗的根源 重复的上下文传递:每次循环都需…...

abaqus constraint 中,tie和coupling的区别

通过AI整理相关问题回答 tie和coupling的区别 在 Abaqus 中&#xff0c;Tie (绑定) 和 Coupling (耦合) 是最常用的两种连接约束&#xff0c;但它们在力学逻辑、自由度限制和应用场景上有着本质的区别。1. Tie Constraint (绑定约束) Tie 的核心逻辑是“胶合”。它将两个表面&a…...