redis之事务

redis事务:事务中的命令要么都成功,要么都失败

查询事务相关命令   help @transactions

watch命令:在事务开启前执行,用于监听key,在事务执行的时候,会先判断一下自己监听的key是不是有变动,如果有变动的话,整个事务就都不会执行了,也相当于一个mysql中的视图的概念了

multi命令为开启事务,事务的开启的先后不影响事务执行的先后,

exec命令为执行事务里面的命令:一次执行事务里面的全部命令,这个命令执行的先后代表着不同事务中的命令执行的先后

discard命令:取消事务,就是在执行multi命令之后可以用该命令取消事务

 

注意:redis事务与mysql不同,redis是单线程,多个事务之间可以交叉执行,不加锁,两个事务可以同一个key交叉执行,先执行exec命令的事务就直接操作数据,之后的事务再执行其他事务变动过的数据,没有mysql中的视图的概念

1.事务执行过程:

127.0.0.1:6379> MULTI //开启事务
OK //事务开启成功
127.0.0.1:6379(TX)> set k1 value1 //输入一个命令
QUEUED//命令没有执行,而是放入到队列里了
127.0.0.1:6379(TX)> set k2 value2 //再输入一个命令
QUEUED//这个命令也放到队列里了
127.0.0.1:6379(TX)> EXEC//执行事务里的全部命令
1) OK//第一个命长执行成功
2) OK//第二个命令执行成功
127.0.0.1:6379> 

2.watch使用方法

127.0.0.1:6379> WATCH k2 //对键 k2进行监听
OK//监听成功
127.0.0.1:6379> MULTI //开启事务
OK //
127.0.0.1:6379(TX)> keys * //输入命令
QUEUED //
127.0.0.1:6379(TX)> get k2 //输入命令
QUEUED //
127.0.0.1:6379(TX)> EXEC // 执行,在执行的时候,先判断一下k2在监听过程中是否发生了变化,如果发生了变化,则整个事务中的所有命令都不会执行
(nil) //因为k2发生了变化,因此事务中所有命令都没有执行
127.0.0.1:6379> 

 

posted @ 2021-06-19 16:00  叫我林大官人  阅读(37)  评论(0)    收藏  举报