七天玩转Redis | Day4、Redis事务操作
内容来源: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
全球检查台纸市场稳健增长:高频诊疗需求、产品升级与医疗供应链新机会
超音速扩散器空气动力学优化的MATLAB代码.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
数字化转型最后一公里:AI如何打通企业技术需求对接瓶颈.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
guang告通系统源码包 霸屏系统源码带教学有演示
只需要有对方vx号或者电话号 即可完成精准投放任务到对方朋友圈视频号公众号小程序 以及腾讯旗下所有应用所有广gao位中霸屏展示反复触达客户意向不浪费一点宝光 演示站:https://ad.jitutu.cn/ 演示账号:18877777777 密码:244466666
技术转移服务非标质量不稳定?八环节标准化路径让服务可复制.docx
技术转移服务非标质量不稳定?八环节标准化路径让服务可复制


