1.redis支持简单的事务
2.redis 和 mysql事务的对比
Mysql | Redis | |
开启 | start transaction | multi(并不执行,放在一个队列里) |
语句 | 普通sql | 普通命令 |
失败 | rollback回滚 | discard取消 |
成功 | commit | exec |
rollback 和 discard 的区别:
如果已经成功执行了2条语言,第三条语句出错,
rollback后,前2条的语句影响消失,discard只是结束本次事物,前2条语句造成的影响还在
注:
在multi的后面的语句中,语句出错可能有2种情况
1:语法就有问题,这种exec时,报错,所有语句得不到执行
2:语法本身没错,但适用对象有问题,比如zadd操作list对象 exec之后,会执行正确的语句,并跳过不适当的语句
Redis 的事务中,启用的是乐观锁,只负责检测key有没有被改动
watch key1 key2 。。。。keyN:监听key1 key2 有没有变化,如果监视的key中任意一个有变化,则事务取消
unwatch :取消所有的watch监听