16.Redis之Redis事务

1.MySQL 事务

原子性: 把多个操作,打包成一个整体了

一致性: 事务执行之前,和之后,数据都不能离谱~

持久性: 事务中做出的修改都会存硬盘

隔离性: 事务并发执行,涉及到的一些问题~~ 

2.Redis事务

2.1 认识Redis事务

弱化的原⼦性: redis 没有 "回滚机制". 只能做到这些操作 "批量执⾏". 不能做到 "⼀个失败就恢复到初始状态".
不保证⼀致性: 不涉及 "约束". 也没有回滚. MySQL 的⼀致性体现的是运⾏事务前和运⾏后 , 结果都
是合理有效的, 不会出现中间⾮法状态.
不需要隔离性: 也没有隔离级别, 因为不会并发执⾏事务 (redis 单线程处理请求) .
不需要持久性: 是保存在内存的. 是否开启持久化, 是redis-server ⾃⼰的事情, 和事务⽆关.
  • Redis 的事务,和 MySQL 一比, 完败!!!
  • 原子性: Redis 的事务到底有没有原子性?? 存在争议!!
  • 最原本的含义,是把多个操作打包到一起,要么全都执行(不保证成功),要么全都不执行~~
  • Redis 做到了上述的含义~~【如果事务中若干个操作,存在有失败的,那就失败吧~~则不会有回滚操作~~】
  • 但是 MySQL 这里的原子性,走的更远,也是把多个操作打包到一起,要么全都执行成功)要么全都不执行~~
  • 如果事务中有操作执行失败,要进行 回滚!!把中间已经执行的操作,全都回退了~~
  • MySQL 标杆,提高了"原子性"的门槛~~这就使人们谈到原子性的时候,更多的是想到的 MySQL 这种带有回滚的原子性~.
  • 网上看到, 有的人说,redis 事务有原子性(只是打包一起执行),有的说没有原子性(打包一起执行 + 带有回滚(打包一起正确执行))

  • 但redis事务并不是一无是处的
  • Redis 的事务,主要的意义,就是为了"打包",避免其他客户端的命令,插队插到中间~~
  • Redis 中实现事务,是引入了队列(每个客户端都有一个)
  • 开启事务的时候,此时客户端输入的命令,就会发给服务器并且进入这个队列中(而不是立即执行)
  • 当遇到了"执行事务"命令的时候,此时就会把队列中的这些任务都按照顺序依次执行~~
  • Redis 主线程中完成的~~(主线程会把事务中的操作都执行完,再处理别的客户端)

Redis 的事务为啥就搞的这么简单~~ 为啥不设计成和 MySQL 一样强大呢?

  • MySQL 的事务,在背后付出了很大的代价~~
  • 空间上,要花费更多的空间来存储更多的数据时间上,也要有更大的执行开销.
  • 正是因为 MySQL 上述的问题,才有了 Redis 上场的机会~~

啥时候需要使用到 Redis 的事务呢??

如果我们需要把多个操作打包进行,使用事务是比较合适的

MULTI开启事务

执行事务 EXEC

放弃当前事务 DISCARD 

service redis restart

 2.2 watch的实现原理

3.事务小节 

Redis 的事务,要比 mysql 的事务,简单很多.
1.原子性.Redis 的事务,并不支持回滚.
2.一致性.Redis 并不会保证事务执行前和执行后,内容统-~~
3.持久性. Redis 主要通过内存来存储数据~~
4.隔离性. Redis 自身作为一个单线程的服务器模型,上面处理的请求本质上都是串行执行的

  • multi
  • exec
  • discard
  • watch /unwatch

redis 中的 lua 脚本,也能起到类似于事务的效果.

官方网站上说,事务这里的任何能实现的效果, 都可以使用 lua 脚本代替~ 

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

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

相关文章

14、matlab中矩阵的赋值、调用、运算、范数和距离计算

1、矩阵赋值 1)直接输入参数 代码: A[1 2 3 4 5;2 3 4 5 6]%矩阵赋值A 1 2 3 4 52 3 4 5 6 2)全一矩阵 代码: Cones(3:3)%全1矩阵C 1 1 11 1 11 1 1 3)全零矩阵 …

.NET最新漏洞 | 某SLMS系统存在SQL注入

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

翻译《The Old New Thing》- How do I force the ECHO command to echo?

How do I force the ECHO command to echo? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20080403-00/?p22883 Raymond Chen 2008年04月03日 如何强制执行ECHO命令以进行回显? 简要 ECHO命令用于在命令行打印文本&#xff0…

统一预订,YonSuite商旅费控助力成长型企业“消灭报销”

在成长型企业快速发展的道路上,商旅管理作为连接企业内外的重要纽带,其效率与成本直接影响着企业的整体运营。面对日益增长的商旅需求,如何简化预订流程、降低管理成本、提高运营效率成为了成长型企业亟待解决的问题。用友YonSuite商旅费控以…

【权威出版】2024年新媒体、网络与电子商务国际会议(NMNE 2024)

2024年新媒体、网络与电子商务国际会议 2024 International Conference on New Media, Networking, and E-commerce 【1】会议简介 2024年新媒体、网络与电子商务国际会议即将召开,这是一次集结全球新媒体、网络与电子商务领域精英的学术盛会。 本次会议将深…

DPDK基础组件一(mbuf、ring、pktmbuf_pool)

一、rte_mbuf 此部分转自:https://zhuanlan.zhihu.com/p/616314276 1.mbuf结构 mbuf是报文中的描素的结构体,是整个转发过程中最核心的数据结构之一。主要针对于mbuf的常用API与基本原理做一个简单的介绍。 mbuf:报文内存存储结构,存储在mempool中mempool:使用环形缓冲…

Latex中论文常用的符号、公式、引用格式

内容符号 波浪号 ~:$ \sim $加减号 :$ \pm$点 :$ \cdot $乘号 ∗:$ \ast $约等于 ≈:$ \approx $≤ : $ \le $≥ : $ \ge $ 数学表示 下箭头 ↓ \downarrow ↓ :$ \downarrow $上箭头 ↑ \uparrow ↑: $…

Web安全:软件开发的安全问题与解决方案

「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等…

第三站:Java红——异常处理的热情与挑战

### 第三站:Java红——异常处理的热情与挑战 在Java编程的征途中,异常处理是无法绕过的“红色地带”,它充满了挑战,也饱含解决问题的热情。通过合理地使用异常处理机制,我们可以编写出更加健壮、容错性强的代码。本节…

jni调用so或dll区别

在Java中通过JNI(Java Native Interface)调用本地代码时,所使用的动态库文件扩展名(如 .dll 对于Windows或 .so 对于Unix-like系统)取决于你的操作系统和目标平台。 DLL(Dynamic Link Library)…

python数据预处理

PYTHON 最流行库:Numpy、Matplotlib 和 Pandas。Numpy 是满足所有数学运算所需要的库,由于代码是基于数学公式运行的,因此就会使用到它。Maplotlib(具体而言,Matplotlib.pyplot)则是满足绘图所需要的库。Pa…

使用redis的setnx实现分布式锁

在Redis中,SETNX 是 “Set If Not Exists”(如果不存在,则设置)的缩写。这是一个原子操作,用于设置一个键的值,前提是这个键不存在。如果键已经存在,.则不会执行任何操作。 封装方法trylock,用…

智能超越了科技,更是一个复杂系统

智能不仅仅是科技系统,更是一个复杂系统。智能是一个多学科领域,涉及计算机科学、人工智能、神经科学、心理学、社会学、人文艺术、宗教哲学等多个学科。科技系统只是智能的一部分,虽然它们在处理信息和执行任务方面非常强大,但它…

CCF-CSP认证 2023年3月01 田地丈量

矩形重叠面积公式&#xff1a; p1与p2表示矩形A的左下角和右上角&#xff0c;用p3和p4表示矩形B的左下角和右上角。 res!(p1.x > p4.x) || (p2.x < p3.x) || (p1.y > p4.y) || (p2.y < p3.y) //对矩阵不重叠求反 矩阵重叠面积 double Len Math.min(p2_x, p4_x…

深入解析Solon路由的Url大小写匹配策略与实际应用

在数字化时代的背景下&#xff0c;企业对于采购管理的需求日益增长。为了满足这一需求&#xff0c;我们通过采用Spring Cloud、Spring Boot2、Mybatis等先进技术&#xff0c;构建了一个从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理平台。 Solon路由器对ur…

小米员工自爆:35岁被裁后,投百份简历无人问津,一气之下把薪资由2W调为3W,简历改成英文,结果出乎意料

“35岁”&#xff0c;就像职场里一道无形的门槛&#xff0c;压得人喘不过气。一旦迈过这道坎&#xff0c;焦虑、迷茫、恐慌&#xff0c;接踵而至。 最近&#xff0c;我的朋友老张&#xff0c;就真切地体会到了这种“中年危机”。刚过36岁生日&#xff0c;他就收到了来自小米的裁…

从0到1写一个vue2项目,按需引入element-ui的引入,npm下载路由,配置路由,路由嵌套

从0到1写一个vue2项目&#xff0c;此篇内容有element-ui的按需引入&#xff0c;npm下载路由&#xff0c;配置路由&#xff0c;路由嵌套 项目是b站上找的项目链接在此https://www.bilibili.com/video/BV1QU4y1E7qo/?p8&spm_id_frompageDriver&vd_source2c599bf1d75e3f9…

Hive之聚合类开窗函数 + 滑动求和

为什么要写这样子一个主题文章呢&#xff0c;开窗函数毫无疑问&#xff0c;超级重要&#xff0c;但是很多人可能不会遇到一些稍微小众的业务需求&#xff0c;比如说滑动求和。这里带着业务&#xff0c;一并让大家熟悉一些&#xff0c;高阶函数的应用。 0&#xff0c;开窗函数和…

Docker搭建MySQL主从复制

Docker部署MySQL主从复制 文章目录 Docker部署MySQL主从复制一、构建MySQL镜像二、构建systemctl管理MySQL服务镜像三、运行容器四、登录容器4.1、配置master4.2、配置slave 五、授权从库六、更改UUID七、连接主数据库八、验证 一、构建MySQL镜像 我自己是使用的Dockerfile构建…

【JAVA SE】抽象类和接口

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;JAVA 个人主页&#xff1a;Celias blog~ 目录 引言 一、抽象类 1.1 抽象类的定义 1.2 抽象方法 1.3 抽象…