Redis Transaction事务

Redis 事务的目的是方便用户一次执行多个命令。执行 Redis 事务可分为三个阶段:

  • 开始事务
  • 命令入队
  • 执行事务

Redis事务特性

Redis 事务具有两个重要特性:

1) 单独的隔离操作

事务中的所有命令都会被序列化,它们将按照顺序执行,并且在执行过的程中,不会被其他客户端发送来的命令打断。

2) 不保证原子性

在 Redis 的事务中,如果存在命令执行失败的情况,那么其他命令依然会被执行,不支持事务回滚机制。

注意:Redis 不支持事务回滚,原因在于 Redis 是一款基于内存的存储系统,其内部结构比较简单,若支持回滚机制,则让其变得冗余,并且损耗性能,这与 Redis 简单、快速的理念不相符合。

Redis事务命令

Redis事务命令
命令说明
MULTI开启一个事务
EXEC执行事务中的所有命令
WATCH key [key ...]在开启事务之前用来监视一个或多个key 。如果事务执行时这些 key 被改动过,那么事务将被打断。
DISCARD取消事务。
UNWATCH取消 WATCH 命令对 key 的监控。

Redis事务应用

您可以把事务可以理解为一个批量执行 Redis 命令的脚本,但这个操作并非原子性操作,也就是说,如果中间某条命令执行失败,并不会导致前面已执行命令的回滚,同时不会中断后续命令的执行(不包含监听 key 的情况)。示例如下:

开启事务
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> INCR 1
QUEUED #命令入队成功
127.0.0.1:6379> SET num 10
QUEUED
#批量执行命令
127.0.0.1:6379> EXEC
1) (integer) 1
2) OK

若在事务开启之前监听了某个 key,那么不应该在事务中尝试修改它,否则会导致事务中断。

开启事务之前设置key/value,并监听
127.0.0.1:6379> set www.biancheng.net hello
OK
127.0.0.1:6379> WATCH www.biancheng.net
OK
127.0.0.1:6379> get www.biancheng.net
"hello"
#开启事务
127.0.0.1:6379> MULTI
OK
#更改key的value值
127.0.0.1:6379> set www.biancheng.net HELLO
QUEUED
127.0.0.1:6379> GET www.biancheng.net
QUEUED
#命令执行失败
127.0.0.1:6379> EXEC
(error) EXECABORT Transaction discarded because of previous errors.
#取消监听key
127.0.0.1:6379> UNWATCH 
OK  

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

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

相关文章

图像标记上线,描点信息尽在掌握丨三叠云

图像标记 路径 表单设计 >> 组件 >> 增强组件 功能简介 「图像标记」字段是「增强字段」类型字段。用户通过上传图片的方式构建一个背景图片,并在构建的图片背景上添加描点信息。搭配「仪表盘」中的「图像轨迹」,可绘制出相应的数据轨迹…

界面组件DevExpress Reporting v23.1 - Web报表设计器功能升级

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表 界面组件DevExpress Reporting v23.1已经发布一段…

基于JavaWeb+SSM+Vue微信阅读小程序的设计和实现

基于JavaWebSSMVue微信阅读小程序的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏[Java 源码获取 源码获取入口 Lun文目录 第1章 绪论 1 1.1 课题背景 1 1.2 课题意义 1 1.3 研究内容 1 第2章 开发环境与技术 3 2.1 MYSQL数据库 3 2.2 JSP技…

2016年8月15日 Go生态洞察:Go 1.7版本发布

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

解决traefik/nginx-ingress-controller配置正确的情况访问域名仍然报错: Connection Refused的问题

最近碰到一个很奇怪的问题: traefik/nginx-ingress-controller配置正确,但是访问ingress配置的host域名就是死活报错: Connection Refused 这样怎么也找不到原因,然后一咬牙直接在其中一台节点yum安装nginx, 通过直接反向代理的方…

微信小程序开发资源汇总

本文收集了微信小程序开发过程中会使用到的资料、问题以及第三方组件库。本文不是一篇关于如何学习微信小程序的入门指南,也非参考手册,只是一些资料的整理。 本仓库中的资料整理自网络,也有一些来自网友的推荐。 官方文档 小程序设计指南…

UE5 UI教程学习笔记

参考资料:https://item.taobao.com/item.htm?spma21n57.1.0.0.2b4f523cAV5i43&id716635137219&ns1&abbucket15#detail 基础工程:https://download.csdn.net/download/qq_17523181/88559312 1. 介绍 工程素材 2. 创建Widget UE5 UI系统的…

那些被玩烂了的设计模式

单例模式 单例模式是指一个类在一个进程中只有一个实例对象(但也不一定,比如Spring中的Bean的单例是指在一个容器中是单例的) 单例模式创建分为饿汉式和懒汉式,总共大概有8种写法。但是在开源项目中使用最多的主要有两种写法&am…

electron实现截图的功能

Electron是一种跨平台的桌面应用程序开发框架,可以使用HTML、CSS和JavaScript等Web技术构建桌面应用程序。下面是一种使用Electron实现截图的简单方法: 安装Electron和截图库 首先,需要安装Electron和一个截图库,例如electron-sc…

替换jar文件中的jar文件中的class

文件格式 testjar.jar在ruoyi.jar中。 AssetServiceImpl.class在testjar.jar 查找testjar.jar路径 jar -tvf ruoyi.jar | grep testjar.jar 解析testjar.jar jar -xvf ruoyi.jar BOOT-INF/lib/testjar.jar 查找class文件路径 jar -tvf testjar.jar | grep AssetServiceImp…

ELK: logstash gork filter 多个模式(pattern)匹配规则语法和多行日志匹配设置

项目里用logstash分析日志,由于有多种模式(pattern)需要匹配,网上搜了很多示例,发现这些都是老的写法,都会报错,后来查阅了官方文档,才发现,新版本只支持新语法。 错误的…

【MISRA-C 2012】浓缩版解读

文章目录 1、前言2、简介2.1、如何看待MISRA-C 20122.2、准则(guidelines)里面的指示(Directive)和规则(Rule)2.3、准则(guidelines)的级别(Category) 3、若干重要的Directive和Rule3.1、指示(Directive)Dir 2.1(必要) 所有的源文件编译过程不得有编译错…

聚类笔记/sklearn笔记:Affinity Propagation亲和力传播

1 算法原理 1.1 基本思想 将全部数据点都当作潜在的聚类中心(称之为 exemplar )然后数据点两两之间连线构成一个网络( 相似度矩阵 )再通过网络中各条边的消息( responsibility 和 availability )传递计算出各样本的聚类中心。 1.2 主要概念 Examplar聚类中心similarity S(i…

Java Excel Poi 单元格内置的数据格式

位置 //在类 org.apache.poi.ss.usermodel.BuiltinFormats 中的私有成员变量_formats中 private static final String[] _formats new String[]{"General", "0", "0.00", "#,##0", "#,##0.00", "\"$\"#,##…

【ARM CoreLink 系列 3.2 -- CCI-400,CCI-500, CCI-550 差异】

文章目录 CCI-400 和 CCI-500 差异ARM CCI-400ARM CCI-500ARM CCI-550CCI-400 和 CCI-500 差异 ARM的 CCI(Cache Coherent Interconnect)系列产品是用于多核处理器之间的高性能缓存一致性互连。CCI-400 和 CCI-500 是该系列中的两种设计,它们旨在允许多个处理器核心和其他资…

TopNet-(CVPR2023)前背景图像合成

文章目录 摘要引言算法架构结构损失函数 实验数据集评估SOTA比较模型是否过拟合到修复区域泛化到真实图片消融实验 讨论及结论限制 参考文献 摘要 作者调研自动放置目标到背景进行图像合成的问题。提供背景图、分割的目标,训练模型预测合理放置信息(位置…

JavaScript文档加载和文档准备的区别

你可能已经听说过JavaScript中的“文档加载”和“文档准备”这两个术语。虽然它们听起来很相似,但它们实际上有一些重要的区别。在本文中,我们将深入探讨这两个概念的区别,以及它们在实际编码中的应用。 引言 在开始讨论JS文档加载和文档准备…

批量添加PPT备注

我一直都觉得,用python高效办公,是件没必要的事。。。 但直到最近写课做PPT,做了80多页PPT,要把每一页PPT的备注粘贴进去时 我觉得,有什么关系呢,一页一页粘 但是粘到5页,我感觉ctlc\v频率有点儿…

程序员接单,宝藏好平台抄底攻略清单!五大平台精选。

前阵子“双十一”购物节狂欢促销,各种好货清单席卷而来。 程序员购不购物我不知道,但是这个兼职、接单清单相信你一定用得着。 搜罗海量信息,整理大量数据与评价,挖出了5个宝藏平台,绝对个个精选,保证量大…

图片转换成pdf格式的软件ABBYY16

ABBYY PDF这款提供多种图像处理选项,可提高源图像的质量,便于准确地识别光学字符。我们扫描纸质文档或从图像文件创建 PDF 时,务必选择合适的图像处理选项。而在ABBYY PDF 中包含下列图像处理选项。 识别文本 — 选择此选项会将文本层放在图…