场景

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

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

  1. 从实例入手学习Shiro的会话机制

    场景 从实例入手学习Shiro与Web的整合: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/90140802 在上面已经实现整合 ...

  2. 从实例入手学习Shiro自定义Realm实现查询数据进行验证

    场景 从实例入手学习Shiro与Web的整合: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/90140802 在上面已经实现整合 ...

  3. Redis事务中几种常见的场景-exec执行前后的语法错误时的处理

    场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Re ...

  4. 详解JS中的事件机制(带实例)

    2019独角兽企业重金招聘Python工程师标准>>> 1. 事件冒泡与事件捕获 事件冒泡和事件捕获分别由微软和网景公司提出,这两个概念都是为了解决页面中事件流(事件发生顺序)的问题 ...

  5. ES中搜索结果各属性说明介绍,以及搜索中的timeout机制讲解(来自学习资料,34节)

    1.属性说明和介绍 执行命令: GET /test_index/test_type/_search?timeout=1s 运行后的结果如下: {"took": 4,"ti ...

  6. Jquery中进行post请求时同步与异步的区别(从实例入手学习)

    场景 表单中有两个输入框input在提交这个表单前需要对两个输入框进行校验. 即点击提交按钮时会经过校验的方法,此方法会post方式提交到后台,在请求后台成功后的回调方法中会对js变量进行赋值,进而决 ...

  7. 从实例入手学习Shiro与Web的整合

    场景 Shiro官网关于Web整合文档: http://shiro.apache.org/web.html#Web-configuration W3Cschool Shiro Web集成: https ...

  8. 从实例入手学习使用vue+axios配置代理进行跨域访问百度音乐API

    场景 如果要使用axios直接进行跨域访问是不可以的,这是就需要配置代理了,为什么要配置代理呢? 原因就是因为客户端请求服务端的数据是存在跨域问题的,而服务器和服务器之间可以相互请求数据,是没有跨域的 ...

  9. 从实例入手学习Vue-router的使用-实现音乐导航菜单切换

    效果 实现 Vue Router 官方文档 https://router.vuejs.org/zh/guide/ 用 Vue.js + Vue Router 创建单页应用,是非常简单的.使用 Vue. ...

最新文章

  1. nginx web服务理论与实战
  2. 1050 String Subtraction (20 分)_10行代码AC
  3. python的matplotlib风格_matplotlib 的几种风格 练习
  4. java实现计算字符串表达式
  5. Could not load the btn_020.disable.png image referenced from a nib in the bundle with identifier ...
  6. @开发者 区块链技术如此火爆 你却只能望而却步?京东云为你配齐装备!
  7. 远程过程调用失败_快速失败机制amp;失败安全机制
  8. 【Python】:用python做下百度2014笔试题
  9. hello guass
  10. 电脑重置,win10怎么重置此电脑 重置电脑的方法和后果
  11. 大数据之Redis:Redis之一主二仆模式
  12. NUAA 南航操作系统实验 代码部分
  13. nginx lua读redis
  14. 腾讯视频会议真实内部实现分享
  15. 浏览器野史 UserAgent 列传(上)
  16. python 分类问题 画roc曲线实战
  17. 基于单片机的太阳能热水器辅助控制系统
  18. pixfllow光流传感器数据获取及悬停程序编写
  19. 国内NLP的那些人那些会
  20. Java基础 DAY18

热门文章

  1. 博本 微型 电脑 linux,博本电脑下载与安装Windows7iso镜像系统教程
  2. 「后端小伙伴来学前端了」Vue中Props 实现组件通信TodoList案例
  3. 这次让我们从字节码文件来重新认识String,文末有两个小小面试题,一起来试一试
  4. 史上最详细Docker安装Redis (含每一步的图解)实战
  5. 虚拟机的分类_「面试必备」Java虚拟机知识点复习手册(下)
  6. python联盟是什么意思_Python 与 英雄联盟(1)
  7. linux wireshark_WireShark使用教程
  8. excel模糊匹配两列文字_Excel快速画出美观饼图
  9. js 时间比较_成都js聚合物弹性防水涂料生产厂家来电洽谈_鹏晨防水
  10. centos 6.5 32bit qemu 环境搭建