场景

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所以复制一个会话

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

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

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

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

posted on 2020-03-23 16:00  霸道流氓  阅读(3431)  评论(0编辑  收藏  举报