一个事务从开始到执行会经历以下三个阶段:
开始事物->命令入队->执行事务|取消事物
单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的...运行时错误,不会影响到成功的命令执行结果,不会回滚
对字符串进行累加,属于运行时错误,可以去到k2,只有第一行命令错误,不会影响其他的
?...更新时比较version
watch key[key循环]
事物正常结束,数据期间没有发生变动,这个时候就正常执行成功(就是看你的钱,在你花的期间,有没有人动过)
一但事物执行成功监控就会取消
?...在链接一个客户端(测试失败)
?
A线程准备执行事物并监控qian这个key,然后命令入队,但是还没有执行提交
?
B线程在这个时候对qian这个key的值进行修改
B线程重置成1000
?...,并执行事务队列中的所有命令,将返回结果全部返回给客户端
redis不支持事务回滚机制,但会检查每一个事务命令是否有语法错误;redis事务不支持检查程序员的逻辑错误,如对String类型对数据库执行hashMap