redis的事务
程序员文章站
2022-06-22 11:46:56
redis支持简单的事务操作,将redis事务与mysql事务对比: Mysql Redis 开启 start transaction multi 语句 普通sql 普通命令 失败 rollback 回滚 discard 取消 成功 commit exec 在mutil后面的语句中, 语句出错可能有 ......
redis支持简单的事务操作,将redis事务与mysql事务对比:
mysql |
redis |
|
开启 |
start transaction |
multi |
语句 |
普通sql |
普通命令 |
失败 |
rollback 回滚 |
discard 取消 |
成功 |
commit |
exec |
在mutil后面的语句中, 语句出错可能有2种情况:
1: 语法就有问题,此时exec报错, 所有语句得不到执行:
2: 语法本身没错,但适用对象有问题,exec之后会执行正确的语句,并跳过有问题的语句.
第一条命令执行成功,第二条命令被跳过,一条出现错误其余正确的命令仍然可以执行,再换discard取消试试看:
mysql的rollback与redis的discard的区别:
mysql回滚为sql全部成功才执行,一条sql失败则全部失败,执行rollback后所有语句造成的影响消失
redis的discard只是结束本次事务,正确命令造成的影响仍然还在.
在事务中还有事务监听命令:
watch key1 key2 ... #监听一个或多个key
unwatch #取消所有的监听
redis的事务中启用的是乐观锁,只负责监测key没有被改动.如果没变正常执行,如果有变事务取消