redis 事务的操作

https://www.cnblogs.com/minejava/p/13921188.html

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.

 

posted @ 2022-03-30 21:56  王越666  阅读(30)  评论(0编辑  收藏  举报