Redis 事务提供了一种将多个命令请求一起打包的功能。然后,再按顺序执行打包的所有命令,并且不会被中途打断。
Redis 可以通过 MULTI,EXEC,DISCARD 和 WATCH 等命令来实现事务(transaction)功能。
> MULTI
OK
> SET USER "123"
QUEUED
> GET USER
QUEUED
> EXEC
1) OK
2) "123"
使用 MULTI命令后可以输入多个命令。Redis 不会立即执行这些命令,而是将它们放到队列,当调用了EXEC命令将执行所有命令。
这个过程是这样的:
- 开始事务(MULTI)。
- 命令入队(批量操作 Redis 的命令,先进先出(FIFO)的顺序执行)。
- 执行事务(EXEC)。
你也可以通过 DISCARD 命令取消一个事务,它会清空事务队列中保存的所有命令。
> MULTI
OK
> SET USER "123"
QUEUED
> GET USER
QUEUED
> DISCARD
OK
WATCH 命令用于监听指定的键,当调用 EXEC 命令执行事务时,如果一个被 WATCH 命令监视的键被修改的话,整个事务都不会执行,直接返回失败。
> WATCH USER
OK
> MULTI
> SET USER "123"
OK
> GET USER
123
> EXEC
ERR EXEC without MULTI