redis事务以及watch监视

redis事务:一次执行多个命令,相当于一个命令集合,按顺序执行,不许加塞。
mulit:开启事务,命令入队。
exec:通过exec查看队列中的语句结果。
discard:放弃事务操作。
watch:开启监控,监控的key如果被其他线程更改,当前操作会失败,语句为;watch key1 key2 (可同时监控多个key)
开启multi后,指令变为入队,所有命令都会入队,执行exec后拿到结果。
在这里插入图片描述
当multi开启后,如果出现严重的逻辑问题,那么队列中的所有命令全部失效,直到执行到exec。
在这里插入图片描述
如果出现比较轻微的逻辑问题,执行exec后,部分会更改,出错的语句会提示更改失败。
在这里插入图片描述

所以:redis执行部分事务。
执行discard后关闭事务,但如果没提交,队列中的操作全部命令失效。
在这里插入图片描述
watch:相当于给redis的key上了一把乐观锁。
mysql:乐观锁:mysql乐观锁实际是字段后加version字段,当同时拿到该行的消息后,先提交的数据version(版本)字段会加一,如果后面的人提交,发现版本号不一致,会提示错误。
悲观锁:表锁,行锁,读锁,写锁。
对key开启监控后,启用multi事务,防止加塞,如果中途有加塞,那么本次事务失败。
演示:
1.当前同时启动两个redis。
在这里插入图片描述
2.对当前字段test进行watch监控并开启事务。
在这里插入图片描述
3.这是另一个redis开始操作test。
在这里插入图片描述
4.在对当前开启监控test的数据库进行操作。
在这里插入图片描述
结论:执行exec后回复nil,说明当前对test操作失败。
如果不需要再监控执行unwatch。
取消监控执行unwatch。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值