当前位置: 首页 > news >正文

[001-03-007].第07节:Redis中的事务

我的后端学习大纲

我的Redis学习大纲


1、Redis事务是什么:

  • 1.可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化, 按顺序地串行化执行而不会被其他命令插入,不许加塞
  • 2.一个队列中,一次性、顺序性、排他性的执行一系列命令
    在这里插入图片描述

2、Redis事务和数据库事务对比:

在这里插入图片描述


3、基本操作:

3.1.常用命令:

在这里插入图片描述

3.2.正常执行

  • 在执行exec命令的时候,会一次性的执行上述所有的命令
    在这里插入图片描述

3.3.放弃事务:

a.命令说明:

  • MULTI :事务开始
  • DISCARD :放弃事务

b.案例演示:

在这里插入图片描述

b.官网说明:

在这里插入图片描述


3.4.全体连坐:

a.命令说明:

  • 在MULTI 和 EXEC 之间有一个指令语法错误,所有的命令都不会执行

a.操作演示:

在这里插入图片描述

c.官网说明:

在这里插入图片描述


3.5.冤头债主:

a.命令说明:

  • 1.Redis 不提供事务回滚的功能,开发者必须在事务执行出错后,自行恢复数据库状态
  • 2.注意和传统数据库事务区别,不一定要么一起成功要么一起失败

b.操作演示:

在这里插入图片描述

c.官网说明:

在这里插入图片描述


3.6.watch监控:

a.Redis使用Watch 来提供乐观锁锁定

  • 1.悲观锁:
    • 认为每次去拿数据都很认为别人会修改,所以每次拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁
  • 2.乐观锁:
    • 认为每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,提交版本必须 大于 记录当前版本才能执行更新

b.watch

  • 1.初始化 键值(k1 和 balance 两个key),先监控再开启multi,保证两key变动在同一事务内
    在这里插入图片描述
b2.有加塞篡改:
  • 1.watch命令是一种乐观锁的实现,Redis在修改的时候会检测数据是否被更改,如果更改了,则执行失败
  • 2.第一个窗口蓝色框第5步执行结果返回为空,也就是相当于是失败,笔记见最下面官网说明
    在这里插入图片描述在这里插入图片描述

c.unwatch

  • 1.操作演示:
    在这里插入图片描述
  • 一旦执行了 exec 之前加的watch监控锁都会被取消掉
  • 当客户端连接丢失的时候(比如退出连接),所有东西都会被取消监视

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【数据结构与算法 | 灵神题单 | 快慢指针(链表)篇】力扣876, 2095, 234
  • CSS之我不会
  • tailscale与zerotier在linux冲突问题解决
  • 基于SSM的养老院管理系统
  • MyBatis 方法重载的陷阱及解决方案
  • 【Python】解析网络源码节点的时候,遇到空白的行怎么办?
  • HTML5超酷炫的水果蔬菜在线商城网站源码系列模板1
  • 【Qt】选择器
  • 【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)
  • Docker打包镜像
  • JavaScript高级——显式原型和隐式原型
  • 自学半年LabVIEW,能搭建出来一个系统吗
  • Datasheet SHT20芯片的数据手册
  • 在深度学习计算机视觉的语义分割中,Boundary和Edge的区别是?
  • 【数学建模】典型相关分析
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • css的样式优先级
  • ESLint简单操作
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • MySQL的数据类型
  • Next.js之基础概念(二)
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 程序员该如何有效的找工作?
  • 大型网站性能监测、分析与优化常见问题QA
  • 回顾2016
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 移动端唤起键盘时取消position:fixed定位
  • linux 淘宝开源监控工具tsar
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #stm32整理(一)flash读写
  • (day 12)JavaScript学习笔记(数组3)
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (附源码)ssm高校实验室 毕业设计 800008
  • (十)c52学习之旅-定时器实验
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (转)scrum常见工具列表
  • ***利用Ms05002溢出找“肉鸡
  • .env.development、.env.production、.env.staging
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .Net 4.0并行库实用性演练
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net mvc 获取url中controller和action
  • .net MVC中使用angularJs刷新页面数据列表
  • .Net mvc总结
  • .NET分布式缓存Memcached从入门到实战
  • .NET下ASPX编程的几个小问题