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

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

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

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

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

    博客园: https://www.cnblogs.com/badaoliumangqizhi/ 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。
  • 相关阅读:
    pylab
    通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证
    PRIMUS
    Ubuntu 下安装AMBER10/AmberTools 1.2
    SUPCOMB
    biopython
    python IDE
    SASREF
    PEAK
    ANDROID移植: WIFI设计原理(源码分析
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/12552756.html
Copyright © 2020-2023  润新知