七天玩转Redis | Day4、Redis事务操作

youmo_wy youmo_wy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

内容来源:https://huixiaoyuan.blog.csdn.net/article/details/122523003

事务:把多条语句放在一起执行

 

在MySQL中事务有四大特性,分别是:原子性、一致性、隔离性、持久性,简称是ACID特性,

Redis中的事务具有的特点是:一次性、顺序性、排他性。

事务的执行流程:开始事务(MULTI) -> 命令入队 -> 提交事务(EXEC) -> 执行结束(事务自动销毁)

Redis的单条命令具有原子性(也就是要么成功,要么失败)多条命令的Redis事务来说,不具备原子性

正常执行事务

1.开启事务

开启事务命令

-- MULTI

2.命令入队

(ps:在将命令添加到队列之后,命令并不会立即执行,而是返回一个QUEUED,表示入队成功!)

3.提交命令

提交事务

-- EXEC

取消事务执行

取消事务

-- DISCARD

事务编译时异常

如果我们的命令在书写上就存在明显代码错误,那么就会发生编译时异常,这个时候会有错误提示,但是事务仍能提交,但是提交之后,整个事务队列中的命令都不会执行 

运行时异常

在Redis中如果事务中的命令存在运行时异常,那么在提交事务之后,不存在异常的命令同样会被执行,异常的命令会单独执行失败!

Redis乐观锁实现

  • 悲观锁:认为什么时候都可能出错,所以在任何时候都会加锁
  • 乐观锁:认为什么时候都不会出错,所以什么时候都不会加锁,在更新数据的时候只需要去判断,在此期间是否有人修改过这个数据即可!

去监控我们要操作的字段的命令

-- WATCH key    key要监控的字段的索引

 在给字段添加监控的情况下通过事务去操作字段,如果在未提交时,有新的命令修改了字段值,那么事务一定会提交失败,但是在未监控的情况下,事务仍能提交成功!这就是Redis的乐观锁实现!

所以在实现乐观锁时,开启事务之前,一定要先给字段增加监控!

所以:Redis是可以实现乐观锁的!(面试的时候可是经常会问的!)

另外注意:Redis在每次事务提交之后,无论事务执行成功与否,该事务都会关闭,监控也会自动取消,在下次执行事务时都需要重新开启!
————————————————
版权声明:本文为CSDN博主「灰小猿」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44985880/article/details/122523003

...全文

相关推荐

全球检查台纸市场稳健增长:高频诊疗需求、产品升级与医疗供应链新机会.docx

全球检查台纸市场稳健增长:高频诊疗需求、产品升级与医疗供应链新机会

行业报告QY

超音速扩散器空气动力学优化的MATLAB代码.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

海神之光

数字化转型最后一公里:AI如何打通企业技术需求对接瓶颈.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

guang告通系统源码包 霸屏系统源码带教学有演示

只需要有对方vx号或者电话号 即可完成精准投放任务到对方朋友圈视频号公众号小程序 以及腾讯旗下所有应用所有广gao位中霸屏展示反复触达客户意向不浪费一点宝光 演示站:https://ad.jitutu.cn/ 演示账号:18877777777 密码:244466666

2601_95579407

技术转移服务非标质量不稳定?八环节标准化路径让服务可复制.docx

技术转移服务非标质量不稳定?八环节标准化路径让服务可复制

BIZKEEN
评论 1
收藏 已收藏
分享
返回顶部