综述
MULTI、EXEC、DISCARD、WATCH命令是Redis实现交易功能的基础。它允许多个命令在同一步原子性地实现。它包含两个特性:1、所有的命令都是有序执行的。2、所有的命令要么都执行,要么都不执行。
当命令本身存在语法错时,交易块不会被执行。当命令执行失败(如key存储数据类型与命令对应数据类型不一致)时,交易块的其余命令仍会执行。
Redis不支持交易块数据回滚的原因有两点:1、Redis命令仅会在语法错误和数据类型不一致的情况下失败。这两种情况都是编码错误,应能在开发阶段发现。2、Redis内核简单且快速,所以不支持回滚。
MULTI
…
EXEC
MULTI
…
DISCARD
MULTI
标记交易块的开始。在之后可以输入一系列的命令,并在EXEC命令之后原子执行。
命令参数
MULTI
选项
-无
返回值
-OK
时间复杂度
无
生效版本
1.2.0
EXEC
在MULTI之后输入。原子执行执行之前输入的一系列命令。
命令参数
EXEC
选项
-无
返回值
-Null reply 失败
-Array reply 每个命令的结果
时间复杂度
无
生效版本
1.2.0
DISCARD
在MULTI之后输入。放弃之前输入的一系列命令。
命令参数
DISCARD
选项
-无
返回值
-OK
时间复杂度
无
生效版本
2.0.0