1、概述
Redis中的事务(transacrion)是一组命令的集合。事务同命令一样都是Redis的最小执行单位,一个事务中的命令要么都执行,要么都不执行。
127.0.0.1:6379> MULTI 启动事务
OK
127.0.0.1:6379> SADD user:1 2
QUEUED
127.0.0.1:6379> SADD user:2 1
QUEUED
127.0.0.1:6379> EXEC 执行事务
1) (integer) 1
2) (integer) 1
Redis的事务还能保证一个事务内的命令一次执行而不被其他命令插入。
2、错误处理
语法错误:只要有一个命令有语法错误,执行EXEC命令后Redis就会直接返回错误,连语法正确的命令也不会执行。Redis 2.6.5 之前的版本会忽略有语法错误的命令,然后执行事务中其他语法正确的命令。
运行错误:运行错误使之在命令执行时出现的错误,比如使用散列类型的命令操作集合类型的键。这种错误在实际执行之前Redis是无法发现的,所以在事务李这样的命令是会被Redis接收并执行的。如果事务离得一条命令出现了运行错误,事务里的其他命令依然会继续执行。
3、WATCH命令介绍
127.0.0.1:6379> set key 1
OK
127.0.0.1:6379> watch key
OK
127.0.0.1:6379> set key 2
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set key 3
QUEUED
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get key
"2"
执行WATCH命令后、事务执行前修改了key的值,所以最后事务中的命令没有执行,EXEC命令返回空结果。