目录

redis watch命令

李羽秋
李羽秋 2022年01月26日  ·  阅读 955

redis watch命令

1.watch命令作用?

在Redis中使用watch命令可以决定事务是执行还是回滚。一般而言,可以在multi命令之前使用watch命令监控某些键值对,然后使用multi命令开启事务,执行各类对数据结构进行操作的命令。

当Redis使用exec命令执行事务的时候,它首先会去比对被watch命令所监控的键值对,如果没有发生变化,那么它会执行事务中的命令,提交事务;如果发生变化,那么它不会执行任何事务中的命令。而去事务回滚。无论事务是否回滚,Redis都会去取消执行事务前的watch命令,流程图如下:

image-20211212095448573

2. 实例

1.使用xshell新建两个不同会话进行连接,并同时开启redis

image-20211212095755995

2.会话2设置键为balance,值为20,并使用watch监控balance值

image-20211212100006415

3.会话2执行事务操作,并将balance减10操作放入队列

image-20211212100128538

4.这时,会话3将balance 值减2

image-20211212100226803

5.会话2执行执行exec命令

image-20211212100415811

从这个例子可以看出,当开启事务之前使用watch命令监控某个值时,在未执行事务之前有人对这个值进行了修改,当执行事务时,

redis将会对事务进行回滚

分类: redis
标签: