Redis事务提供了一种"将多个命令打包,然后一次性,按顺序地执行"的机制,并且事务在执行的期间不会主动中断.
redis中事务是可以视为一个队列,即我们可以通过MULTI开始一个事务,这相当于我们声明了一个命令队列。接下来,我们向Redis中提交的每条命令,都会被排入这个命令队列。当我们输入EXEC命令时,将触发当前事务,这相当于我们从命令队列中取出命令并执行,所有Redis中一个事务从开始执行会经历开始事务,命令入队和执行事务 三个阶段。
redis执行的三个阶段
- 开始事务
- 命令入队
- 执行事务
multi
set name "你抓周树人和我鲁迅有什么关系"
get name
exec
若在事务队列中存在命令性错误,则执行EXEC命令时,所有命令都不会执行。
若在事务队列中存在语法性错误,则执行EXEC命令时,其他正确命令会被执行,错误命令抛出异常。
| 序号 | 命令 | 描述 |
|---|---|---|
| 1 | DISCARD | 取消事务,放弃执行事务块内的所有命令。 |
| 2 | EXEC | 执行所有事务块内的命令。 |
| 3 | MULTI | 标记一个事务块的开始。 |
| 4 | UNWATCH | 取消WATCH命令对所有key的所有key的监视。 |
| 5 | WATCH key [key...] | 监视一个(或多个)key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断。 |
浙公网安备 33010602011771号