Redis支持简单的事务
Redis与 mysql事务的对比
Mysql Redis
开启 start transaction multi
语句 普通sql 普通命令
失败 rollback 回滚 discard 取消
成功 commit exec
注: rollback与discard 的区别
如果已经成功执行了2条语句, 第3条语句出错.
Rollback后,前2条的语句影响消失.
Discard只是结束本次事务,前2条语句造成的影响仍然还在
注:
在mutil后面的语句中, 语句出错可能有2种情况
1: 语法就有问题,
这种,exec时,报错, 所有语句得不到执行
2: 语法本身没错,但适用对象有问题. 比如 zadd 操作list对象
Exec之后,会执行正确的语句,并跳过有不适当的语句.
redis简单事务性:
①在执行multi和exec中这段过程,所有的命令都是放到一个队列里来执行的(cmd1,cmd2,cmd3,cmd4……..等等)。
② 倘若在exex命令执行之前,有人改变了cmd【index】任意一个命令下的key对应的值,都可能导致结果出错;这个时候我们需要借助watch关键字来帮我们解决这种问题
③:我们把需要保持事务性的数据,都用watch来监控,这样我们就可以保证简单的事务性了!
举例: