一、WATCH命令介绍
- WATCH命令是一个乐观锁(optimistic locking)
- 功能: 它可以在EXEC命令执行之前,监视任意数量的数据库键,并在EXEC命令执行时,检查被监视的键是否至少有一个已经被修改过了,如果是的话,服务器将拒绝执行事务,并向客户端返回代表事务执行失败的空回复
演示案例
- 以下是一个事务执行失败的例子:
在时间T4,客户端B修改了"name"键的值,当客户端A在T5执行EXEC命令时,服务器会发现WATCH监视的键"name"已经被修改,因此服务器拒绝执行客户端A的事务,并向客户端A返回空回复
二、使用WATCH命令监视数据库键(watched_keys字典)
每个Redis数据库都保存着一个watched_keys字典:<