Redis从2.0版本开始支持事务。自2.0版本起,Redis引入了WATCH
, EXEC
, DISCARD
, MULTI
等命令,使得用户能够将一系列命令打包成一个事务进行执行。
WATCH
WATCH命令用于监视一个或多个键,如果在事务执行之前这些键发生了变化,事务将被取消。使用方式如下:
WATCH key [key ...]
WATCH命令可以被调用多次,一个WATCH 命令可以监控多个key。WATCH命令调用即启动监控功能,从WATCH命令开始点到执行EXEC命令终止。一旦EXEC被调用,所有的键都将不被监视,无论所讨论的事务是否被中止。关闭客户端连接也会触发所有的键被取消监视。
WATCH命令给事务提供check-and-set (CAS) 机制。被WATCH的key被持续监控,如果key在EXEC命令执行前有改变,那么整个事务被取消,EXEC返回null表示事务没有成功。
MULTI
MULTI命令用于开启一个事务。
使用方式如下:
MULTI
EXEC
EXEC命令用于执行事务中的所有命令。如果事务中的任何一个命令执行失败,整个事务都将被取消。使用方式如下:
EXEC
DISCARD
DISCARD命令用于取消一个事务。使用方式如下:
DISCARD
Redis事务操作
使用示例:
WATCH mykey
MULTI
INCR mykey
EXEC
上述代码实现了对mykey键的原子自增操作。在MULTI和EXEC之间,如果mykey键的值发生了变化,事务将被取消。如果没有发生变化,INCR mykey命令将被添加到事务中,然后通过EXEC命令执行整个事务。如果事务执行成功,mykey键的值将被自增。
评论区