Redis-事务控制

xiaoxiao2021-02-28  88

Redis-事务控制

一.事务

1.1 事务的概念

事务表示一组动作,要么全部执行,要么全部不执行。

Redis提供了简单的事务控制。将一组需要一起执行的命令放到multi和exec两个命令之间。multi代表事务的开始,exec代表事务的结束,它们之间的命令是原子顺序执行的。

 

1.2 redis事务相关命令

1.2.1 事务的创建(multi)、执行(exec)与回滚(discard)

(1)multi

 multi代表事务执行的开始,后面跟随着需要一起原子执行的一组命令

 

(2)exec

exec代表事务的执行,当exec执行时,跟在multi命令后的一组命令才真正执行。

 

(3)discard

discard命令用于停止事务的执行。

 

例如:

(1)向集合中加入两个元素(multi和exec命令使用)

10.3.34.101:6378> multi

OK

10.3.34.101:6378> sadd sets1 v1

QUEUED

10.3.34.101:6378> sadd sets1 v2

QUEUED

10.3.34.101:6378> exec

1) (integer) 1

2) (integer) 1

10.3.34.101:6378> smembers sets1

1) "v1"

2) "v2"

 

(2)discard命令的使用

sets1集合中已经存在v1,v2两个元素

10.3.34.101:6378> multi

OK

10.3.34.101:6378> sadd sets1 v3

QUEUED

10.3.34.101:6378> sadd sets1 v4

QUEUED

10.3.34.101:6378> discard

OK

10.3.34.101:6378> smembers sets1  --此时v3,v4两个元素没有加入集合中

1) "v1"

2) "v2"

 

1.2.2 锁

确保事务中的key没有被其他客户端修改过,才执行事务,否则不执行。

 

命令:watch key

watch命令在multi执行执行,当multi块中的命令在执行时,发现该key的值已经在watch命令执行后发生了变化,则事务不能执行。

转载请注明原文地址: https://www.6miu.com/read-41069.html

最新回复(0)