[Redis]事务

Redis事务

Redis 事务提供了一种将多个命令请求打包的功能。然后,再按顺序执行打包的所有命令,并且不会被中途打断。

但是,事务中的每条命令都会与 Redis 服务器进行网络交互,比较浪费资源

所以,日常开发中不建议使用Redis事务

Redis事务操作

使用redis事务的过程是这样的:

  1. 开始事务(MULTI);
  2. 命令入队(批量操作 Redis 的命令,先进先出的顺序执行);
  3. 执行事务(EXEC)。

你也可以通过DISCARD命令取消一个事务

MULTI命令后可以输入多个命令,Redis 不会立即执行这些命令,而是将它们放到队列,当调用了 EXEC 命令后,再执行所有的命令。

 举例

1.首先我们在客户端1开启事务,然后设置key1为111

 2.然后在客户端2获取key1,是获取不到的

 3.这时候执行事务

4.再去客户端2里查询key1,可以查到

 

watch操作

你可以通过WATCH命令监听指定的 Key,当调用exec命令执行事务时,如果一个被watch命令监视的 Key 被 其他客户端/Session 修改的话,整个事务都不会被执行。

会发生三种情况:

1.同一个session中,watch监视的key在multi之前被修改,那么这个事务不会被执行

2.同一个session中,watch监视的key在事务内部被修改,那么这个事务还是会执行成功

3.同一个session中,watch监视的key在事务内部被修改,但是在事务提交之前被其他 session 修改,那么事务不会被执行

下面是第三种情况举例

举例

1.首先我们在客户端1设置一个key1为111,然后使用watch监听key1,然后开启事务,操作key1

 2.这时候,我们去客户端2修改key1

 3.客户端1提交事务,发现提交失败。发现key1是客户端2修改的值,也就是客户端1的事务并没有执行成功

Redis事务特性

我们知道事务具有四大特性:

1. (A)原子性2.(C) 一致性3.(I) 隔离性4.(D) 持久性

但是,在Redis 中不太一样

Redis事务不具备原子性

原子性是指务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用。但是,在redis中,并没有约束和回滚机制,如果事务中的命令出现执行失败的情况,也不会回滚,其他命令依然会执行成功

Redis事务不具备一致性

redis没有约束,也没有回滚机制,事务执行过程中如果某个修改操作出现失败,就可能引起不一致的情况

况且,我们通常说AID保证C,连AID都无法保证,那一致性也更不用说了

Redis事务不涉及隔离性

因为redis是一个单线程模型的服务器程序,所有请求和事务都是串行执行的,自然也就不讨论有没有隔离性了

Redis事务不具备持久性

redis本身就是内存数据库,数据存储在内存中,是不具备持久性的

虽然redis也提供了RDB和AOF这样的持久化机制,但和事务没啥关系

redis事务的错误

1.若在事务队列中存在命令性错误,则执行EXEC命令时,所有命令都不会执行
2.若在事务队列中存在语法性错误,则执行EXEC命令时,其他正确命令会被执行,错误命令抛出异常。

总之,在命令入队时,redis会简单检查语法是否出错,如果出错,视为整个事务无效

但是如果逻辑错了,命令入队的时候是不检查的,只有执行的时候才报错,但其他操作也不会回滚

命令性错误

只有出错的命令不会执行,其他命令依然会执行,这违反了事务的原子性

语法(编译)性错误

在事务中,出现语法错误,会直接报错,后面就算再用exec,之前输入的操作也不会提交执行。

也就是整个事务都不会执行

  

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

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

相关文章

小区业主管理系统

摘 要 随着城市化进程的加速和人口的不断增加,小区的数量也在不断增加。小区作为城市居民居住的主要场所,其管理工作也变得越来越重要。传统的小区业主管理方式存在诸多问题,如信息传递不畅、业务处理效率低下等。因此,开发一个高…

搜维尔科技:「研讨会」惯性动捕技术在工效学领域应用研讨会

Movella将于7月2日(周二)下午2点举行主题为惯性动捕技术在工效学领域应用的研讨会。来自Movella的伙伴赋能经理Jeffrey Muller作为嘉宾出席,届时主讲人将为大家带来Xsens惯性动捕技术在工效学领域的应用分享。同时,研讨会还邀请多…

高频面试题基本总结回顾1(含笔试高频算法整理)

干货分享,感谢您的阅读! (暂存篇---后续会删除,完整版和持续更新见高频面试题基本总结回顾(含笔试高频算法整理)) 备注:引用请标注出处,同时存在的问题请在相关博客留言…

从零开始做题:修猫

修猫 1 题目 2 解题 2.1 使用Stegslove分析图片 (base) ┌──(holyeyes㉿kali2023)-[~/Misc/tool-misc] └─$ java -jar Stegsolve.jar 2.2 analyse -frame browser 2.3 得到flag DASCTF{818ca3a840e768da7d5fcdeaedd5012f}

基于Java微信小程序校园订餐系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还…

springcloud-gateway 路由加载流程

问题 Spring Cloud Gateway版本是2.2.9.RELEASE,原本项目中依赖服务自动发现来自动配置路由到微服务的,但是发现将spring.cloud.gateway.discovery.locator.enabledfalse 启动之后Gateway依然会将所有微服务自动注册到路由中,百思不得其解&a…

1.8 HTTP协议结构

我们来看一下HTTP协议到底由哪些部分组成,也就是HTTP协议的结构。知道了这些知识才能在接口测试中游刃有余。 我们看上图,HTTP协议由四部分组成 起始行 描述请求和响应的基本信息。 当是请求时:请求方法是GET,调用的地址&#…

JAVA【案例5-2】模拟默认密码自动生成

【模拟默认密码自动生成】 1、案例描述 本案例要求编写一个程序,模拟默认密码的自动生成策略,手动输入用户名,根据用户名自动生成默认密码。在生成密码时,将用户名反转即为默认的密码。 2、案例目的 (1&#xff09…

区块链技术与数字货币

1.起源 ➢中本聪(Satoshi Nakamoto), 2008 ➢比特币:一种点对点的电子现金系统 2.分布式账本技术原理 1.两个核心技术: ➢以链式区块组织账本数据实现账本数据的不可篡改 ➢分布式的可信记账机制 2.共识机制:由谁记账 ➢目的: ⚫ 解…

C语言基础——函数(2)

ʕ • ᴥ • ʔ づ♡ど 🎉 欢迎点赞支持🎉 文章目录 前言 一、return语句 二、数组做函数参数 三、嵌套调用和链式访问 3.1 嵌套调用 3.2 链式访问 四、函数声明和定义 4.1 单个文件 4.2 多个文件 总结 前言 大家好啊,继我们上一…

django学习入门系列之第三点《案例 小米商城二级菜单》

文章目录 样例划分区域搭建骨架logo区域完整代码 小结往期回顾 样例 划分区域 搭建骨架 <!-- 二级菜单部分 --> <div class"sub-header"><div class"container"><div class"logo">1</div><div class"sea…

Python爬虫学习 | Scrapy框架详解

一.Scrapy框架简介 何为框架&#xff0c;就相当于一个封装了很多功能的结构体&#xff0c;它帮我们把主要的结构给搭建好了&#xff0c;我们只需往骨架里添加内容就行。scrapy框架是一个为了爬取网站数据&#xff0c;提取数据的框架&#xff0c;我们熟知爬虫总共有四大部分&am…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十七)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 27节&#xff09; P27《26.Stage模型-UIAbility的启动模式》 本节讲解 UIAbility的启动模式&#xff1a;Stage模型的应用&#x…

排序之插入排序----直接插入排序和希尔排序(1)

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 排序之插入排序----直接插入排序和希尔排序(1) 收录于专栏【数据结构初阶】 本专栏旨在分享学习数据结构学习的一点学习笔记&#xff0c;欢迎大家在评论区交流讨…

算法训练营day20--235. 二叉搜索树的最近公共祖先+701.二叉搜索树中的插入操作 +450.删除二叉搜索树中的节点

一、235. 二叉搜索树的最近公共祖先 题目链接&#xff1a;https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-search-tree/ 文章讲解&#xff1a;https://programmercarl.com/0235.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E8%BF%91…

天马学航——智慧教务系统(移动端)开发日志三

天马学航——智慧教务系统(移动端)开发日志三 日志摘要&#xff1a;更新了学生选课模块、我的课程模块以及退课的功能&#xff0c;优化了后端数据库的缓存 1、学生选课模块 学生选课模块主要实现&#xff0c;学生根据需求进行选课操作&#xff0c;通过后端查询到所有教师的课…

一份简单的海外问卷,改变经济现状

在许多人看来&#xff0c;赚钱似乎总是与资金和技术密切相关。然而&#xff0c;即使没有丰富的资金和高超的技术&#xff0c;仍然有机会赚取可观的收入。 首先&#xff0c;需要明确的是&#xff0c;赚钱并非完全依赖于物质资本和技术能力。在这个充满机遇的时代&#xff0c;选…

深入源码设计!Vue3.js核心API——Computed实现原理

如果您觉得这篇文章有帮助的话&#xff01;给个点赞和评论支持下吧&#xff0c;感谢~ 作者&#xff1a;前端小王hs 阿里云社区博客专家/清华大学出版社签约作者/csdn百万访问前端博主/B站千粉前端up主 此篇文章是博主于2022年学习《Vue.js设计与实现》时的笔记整理而来 书籍&a…

谷歌云(GCP)4门1453元最热门证书限时免费考

谷歌云(GCP)最新活动&#xff0c;完成免费官方课程&#xff0c;送4门最热门考试免费考试券1张(每张价值200刀/1453元)&#xff0c;这4门也包括最近大热的AI/ML考试&#xff0c;非常值得学习和参加&#xff0c;活动7/17截止 谷歌云是全球最火的三大云计算厂商(前两名AWS, Azure…

投票多功能小程序(ThinkPHP+Uniapp+FastAdmin)

&#x1f389;你的决策小助手&#xff01; 支持图文投票、自定义选手报名内容、自定义主题色、礼物功能(高级授权)、弹幕功能(高级授权)、会员发布、支持数据库私有化部署&#xff0c;Uniapp提供全部无加密源码。​ 一、引言&#xff1a;为什么我们需要多功能投票小程序&#…