Redis事务中的watch机制-从实例入手学习

场景

Redis中事务的实现流程:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/105048241

在上面学会Redis的事务的使用流程后,Redis还有一个watch机制。

Watch机制原理

使用watch监视一个或者多个key,跟踪key的value修改情况,如果有key的value值在

事务exec执行之前被修改了,整个事务被取消。exec返回提示信息,表示事务已经失败。

但是如果使用watch监视了一个带过期时间的键,那么即使这个键过期了,事务仍然可以正常执行。

大多数情况下,不同的客户端会访问不同的键,相互同时竞争同一key的情况一般都很少,乐观锁能够

以很好的性能解决数据冲突的问题。

何时取消key的监视

1.watch命令可以被调用多次。对键的监视从watch执行之后开始生效,直到调用exec为止,不管事务是否成功执行,

对所有键的监视都会被取消。

2.当客户端断开连接时,该客户端对键的监视也会被取消。

3.unwatch命令可以手动取消对所有键的监视。

watch机制以及乐观锁举例

Centos中Redis的下载编译与安装(超详细):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334

Redis的启动和关闭(前台启动和后台启动):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103972348

RedisDesktopManager客户端可视化工具下载安装与使用:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103983147

参照以上博客搭建好环境,并启动redis服务端,然后开启两个客户端连接。

这里使用的是XShell所以复制一个会话

Redis事务中的watch机制-从实例入手学习_第1张图片

在第一个客户端中设置key-value并watch这个key然后开启事务,不要exec即提交事务

Redis事务中的watch机制-从实例入手学习_第2张图片

然后在复制出来的会话即第二个客户端中将此key修改为100

Redis事务中的watch机制-从实例入手学习_第3张图片

然后再回到第一个客户端中执行exec即提交事务

Redis事务中的watch机制-从实例入手学习_第4张图片

可以看到第一个客户端的事务并没有提交,因为watch的值已经被修改了,所以放弃事务。

你可能感兴趣的:(Redis事务中的watch机制-从实例入手学习)