Redis的事务
1. 是什么?
Redis事务可以一次执行多个命令,本质是一组命令的集合
一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞
2. 能干嘛
一个队列中,一次性、顺序性、排他性地执行一些列命令
3. Redis事务 VS MySQL事务
4. Redis事务命令
multi//开启事务
set k1 v1
set k2 v2
set k3 v3
exex//提交事务
discaer//放弃事务
5. 事务操作异常处理
全体连坐
当事务操作开启时,执行的redis命令有语法异常,那么整个事务都会执行失败
冤头债主
当语句没有语法错误,但当执行时发现是错误的语句,那么错误语句之前的都会正常执行,之后的也会正常执行
6. watch监控
redis使用watch来提供乐观锁锁定,类似于CAS
乐观锁: 每次去拿数据的时候都认为别人不会修改,所以不会上锁,但在更新的时候会判断一下此期间别人有没有更新这个数据
乐观锁策略: 提交版本必须大于记录当前版本才能执行更新
redis中的策略:
被监控的key如果在事务未被提交期间被修改,那么该条事务中的所有命令都不会被执行,并返回Null
7. unwatch
UNWATCH
是Redis中的一个命令,用于取消当前客户端已经监视的所有key。如果一个客户端正在执行一个带有WATCH
命令的事务,那么这个客户端可以在事务执行之前使用UNWATCH
命令来取消对所有key的监视。这样,在事务执行期间,即使其他客户端修改了被监视的key,Redis也不会回滚当前客户端的事务。
总的来说,UNWATCH
命令可以帮助开发者避免因为文件被修改而无法成功执行事务的情况,并且如果客户端需要在执行事务之前取消对一些WATCH
的key进行监控,那么使用UNWATCH
命令可以很方便地达到这个目的。
消对一些WATCH
的key进行监控,那么使用UNWATCH
命令可以很方便地达到这个目的。