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 @ 2020-11-03 16:50  今夜明珠色  阅读(62)  评论(0编辑  收藏  举报