Redis 事务
redis相关命令
MULTI - 标记一个事务块的开始
DISCARD - 取消事务,放弃执行事务块内的所有命令。
EXEC- 执行所有事务块内的命令。
WATCH key [key …]
-监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断
UNWATCH - 取消 WATCH 命令对所有 key 的监视
redis 部分支持事务,不保证原子性
(1)成功执行各条命令
(2)执行错误数据整个回滚
(3)执行后只回滚错误的命令
上述(3) 情况相当于可以理解为java运行时,和非运行时
如果只是运行时候才能检测出的异常,则值回滚异常的命令,其它正确的命令正常执行
Watch 监听
监听过程中 发生对监听数据的修改,导致事务执行回滚,相当于乐观锁机制。
exec执行后会自动清空监听,需要继续监听再执行事务,直到成功
下图在监听过程和执行完事务期间,无人对监控的key 修改,执行成功