Redis事务
-
multi:开始事务
-
exec:执行事务
-
discard:取消事务
-
watch:乐观锁,监视一个或多个key,如果事务执行之前这些key被其他线程所改动,那么事务里的命令会全部执行失败(返回nil)
-
unwatch:取消所有监视
注意:
-
若已经watch key 又手动取消了事务或者是事务执行失败,则自动unwatch。需要重新监视
不支持原子性操作,一条语句运行时错误不会导致其他语句失败
但是若是编译时出错则还是会导致全部语句执行失败
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set k1 v4
QUEUED
127.0.0.1:6379> incr k2
QUEUED
127.0.0.1:6379> set k5 v5
QUEUED
127.0.0.1:6379> exec
1) OK
2) (error) ERR value is not an integer or out of range
3) OK
##########################################################################
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set k6 v6
QUEUED
127.0.0.1:6379> uzi k1 v1
(error) ERR unknown command `uzi`, with args beginning with: `k1`, `v1`,
127.0.0.1:6379> get k2
QUEUED
127.0.0.1:6379> exec
(error) EXECABORT Transaction discarded because of previous errors.