简介:
这篇笔记主要记录一下redis中事务的处理设置。
命令介绍:
1.multi
可用版本: >=1.2.0
时间复杂度: O(1)
作用:
标记一个事务块的开始。事务块中的多条命令会按照先后顺序放入一个队列之中,最后由exec命令原子性的执行。
返回值:
返回OK。
2.exec
可用版本: >=1.2.0
时间复杂度: 事务块中使用命令的时间复杂度之和
作用:
执行所有事务块中的命令。
假如某些key正处于watch命令的监控之下,并且事务块中有和这个key相关的命令,那么exec命令只在这个key没有被其他命令改动的情况下执行并且失效,否则该事务将被打断。
返回值:
执行成功,返回事务块中所有命令的返回值。执行失败返回nil。
3.discard
可用版本: >=2.0.0
时间复杂度: O(1)
作用:
取消事务,放弃执行事务块中的所有命令。
如果正在使用watch命令监视某一些key的话,那么取消所有的监视,等同于命令unwatch。
返回值:
返回OK。
4.watch
可用版本: >=2.2.0
时间复杂度: O(1)
命令格式: watch key [key...]
作用:
监视一个或者多个key,如果事务执行之前这些key被其他命令改动,那么事务将中断。
返回值:
返回OK。
5.unwatch
可用版本: >=2.2.0
时间复杂度: O(1)
作用:
取消watch命令对所有key的监视。
返回值:
返回OK。
注意:
如果在执行watch命令之后,exec命令或者discard命令先被执行了的话,那么就不需要执行unwatch命令了。
因为 EXEC 命令会执行事务,因此 WATCH 命令的效果已经产生了;而 DISCARD 命令在取消事务的同时也会取消所有对 key 的监视,因此这两个命令执行之后,就没有必要执行 UNWATCH 了。