在 Redis 中,WATCH 命令的工作机制如下:当客户端 B 在使用 MULTI 开启一个事务之前,使用 WATCH 命令监控了它要在事务中操纵的键。今后,客户端 B 可以将一系列命令通过 MULTI 命令加入事务队列,直到发送 EXEC 命令
当客户端 B 发送 EXEC 指令后,该指令入队,Redis 在预备实行事务队列中的命令之前,会检查被 WATCH 命令监控的键是否被修改过。在客户端 B 发送 EXEC 命令到 Redis 单线程开始实行这个事务中的命令期间,如果客户端 A 等其他客户端对其中被监控的键举行了修改,那么 Redis 会让客户端 B 的事务实行失败,EXEC 命令会返回 (nil),并且清空客户端 B 的事务队列,不会实行事务队列中的任何指令