Redis Exec 命令用于执行所有事务块内的命令。
redis Exec 命令基本语法如下:
- redis 127.0.0.1:6379> Exec
>= 1.2.0
事务块内所有命令的返回值,按命令执行的先后顺序排列。 当操作被打断时,返回空值 nil 。
- # 事务被成功执行
- redis 127.0.0.1:6379> MULTI
- OK
- redis 127.0.0.1:6379> INCR user_id
- QUEUED
- redis 127.0.0.1:6379> INCR user_id
- QUEUED
- redis 127.0.0.1:6379> INCR user_id
- QUEUED
- redis 127.0.0.1:6379> PING
- QUEUED
- redis 127.0.0.1:6379> EXEC
- 1) (integer) 1
- 2) (integer) 2
- 3) (integer) 3
- 4) PONG
- # 监视 key ,且事务成功执行
- redis 127.0.0.1:6379> WATCH lock lock_times
- OK
- redis 127.0.0.1:6379> MULTI
- OK
- redis 127.0.0.1:6379> SET lock "huangz"
- QUEUED
- redis 127.0.0.1:6379> INCR lock_times
- QUEUED
- redis 127.0.0.1:6379> EXEC
- 1) OK
- 2) (integer) 1
- # 监视 key ,且事务被打断
- redis 127.0.0.1:6379> WATCH lock lock_times
- OK
- redis 127.0.0.1:6379> MULTI
- OK
- redis 127.0.0.1:6379> SET lock "joe" # 就在这时,另一个客户端修改了 lock_times 的值
- QUEUED
- redis 127.0.0.1:6379> INCR lock_times
- QUEUED
- redis 127.0.0.1:6379> EXEC # 因为 lock_times 被修改, joe 的事务执行失败
- (nil)