场景
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的值已经被修改了,所以放弃事务。