Redis数据库(四):Redis数据库事务

        经过前面的学习,我们就对于Redis数据库可以进行基本的操作,从这一节开始,我们就正式学习Redis数据库的相关知识,为以后工作打下坚实的基础。

目录

一、事务(了解)

1.1 Redis的事务概念  

1.2 Redis事务机制命令

1.2.1 正常执行事务

1.2.2 放弃事务

1.2.3 编译型异常

1.2.4 执行时异常

二、Redis的乐观锁 Watch(面试)

2.1 悲观锁(Pessimistic Lock)

2.2  乐观锁(Optimistic Lock)


一、事务(了解)

1.1 Redis的事务概念  

         事务的本质: 一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行! 一次性,顺序性,排他性,执行一系列的命令! MySQL中的事务,要么同时成功,要么同时失败,必须保证原子性! Redis中的事务中的命令按顺序执行,但 Redis 不提供回滚机制。如果事务中的某个命令失败,其他命令仍会继续执行。Redis单条命令是保证原子性的,所有事务内的命令要么全部执行,要么全部不执行,但不保证部分命令失败时的回滚。事务执行时,所有命令被一次性发送到服务器, Redis事务是没有隔离级别的概念。

1.2 Redis事务机制命令

 Redis的事务使用过程:

  1.  开启事务:multi 
  2.  命令入队 ...
  3.  执行事务: exec

所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行!

1.2.1 正常执行事务

1.2.2 放弃事务

1.2.3 编译型异常

命令有错, 事务中所有的命令都不会被执行

1.2.4 执行时异常

如果事务队列中存在语法性错误,执行命令的时候,错误命令抛出异常,其他命令可以正常执行,

二、Redis的乐观锁 Watch(面试)

       这只是解决问题的一种思路。

2.1 悲观锁(Pessimistic Lock)

       悲观锁假设并发冲突会频繁发生,因此在事务开始时就加锁,以防止其他客户端同时修改数据。悲观锁会阻塞其他客户端对数据的访问,直到事务结束。很悲观,认为什么时候都会出问题,无论做什么都会加锁!但是影响效率!

2.2  乐观锁(Optimistic Lock)

        乐观锁假设并发冲突不会频繁发生,因此不会在事务开始时加锁,而是在提交事务时检查数据是否被修改。如果数据在事务期间被其他客户端修改,事务将失败并需要重试。很乐观,认为什么时候都不会出问题,所以不会加锁!更新数据时去判断一下,在此期间是否有人 修改过这个数据!MySQL的version的使用:先获取version,更新数据时比较version,看version 是否被修改

Redis的监视测试:

        watch监测的对象在我修改时,别人也修改了,此次操作就会失败。

1、正常执行成功!

2、多线程修改值,使用watch可以当做Redis的乐观锁操作!在命令执行之前,第二个客户端执行了修改了a的值,就会导致事务执行失败

至此,Redis数据库第四节就介绍完毕,这一节内容作个简单了解,更多精彩内容见后期博客!感谢阅读,如果喜欢,点赞加关注!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/745834.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

海外品牌营销:TikTok达人合作中的挑战与对策

随着TikTok成为许多品牌进行营销推广的重要渠道,TikTok上达人也因其庞大的粉丝基础和强大的内容创作能力,成为品牌合作的首选对象。然而,在与TikTok达人合作的过程中,品牌也面临着诸多挑战,如合作沟通、内容创意、数据…

基于昇腾AI | Yolov7模型迁移到昇腾平台EA500I边缘计算盒子的实操指南

近年来,国产化替代的进程正在加快。在众多国产平台中,昇腾平台具有高性能、低功耗、易扩展、软件栈全面成熟等优势,其产品和技术在国内众多领域实现了广泛应用;作为昇腾的APN伙伴和IHV合作伙伴,英码科技携手昇腾推出了…

论文《Federated Recommendation with Additive Personalization》阅读

论文《Federated Recommendation with Additive Personalization》阅读 论文概况PreliminariesMethodologyExperiments消融实验ConvergenceCurriculum分析可视化 一点总结 今天带来的是 ICLR 2024 关于联邦推荐的论文《Federated Recommendation with Additive Personalization…

【摄像头标定】双目摄像头标定及矫正-opencv(python)

双目摄像头标定及矫正 棋盘格标定板标定矫正 棋盘格标定板 本文使用棋盘格标定板,可以到这篇博客中下载:https://blog.csdn.net/qq_39330520/article/details/107864568 标定 要进行标定首先需要双目拍的棋盘格图片,20张左右,…

易天智能eHR管理平台 CreateUser 任意用户添加漏洞复现

0x01 产品简介 易天智能eHR管理平台是一款功能全面、智能化的人力资源管理软件,旨在帮助企业提高人力资源管理效率和管理水平。该平台通过集成员工信息、薪酬管理、档案人事管理、绩效管理和招聘管理等多个模块,实现了人力资源管理的全面智能化管理。 0x02 漏洞概述 易天智…

Windows11环境下安装Vmware Workstation 16的方法

1、下载VMWare 从网盘下载 https://pan.baidu.com/share/init?surlUpcnqiRv6nUuzO0EOZ22zg 提取码:8888 2、安装VMware虚拟机   第1步:双击上面准备好的Vmware Workstation 16虚拟机软件安装包,即可看到如图所示的安装向导初始界面&#x…

为什么嵌入式驱动开发工程师可以拿高薪?

嵌入式驱动开发是技术密集型的工作。想象一下,每一个硬件设备都需要与之匹配的驱动程序,才能在操作系统中正常工作。刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论…

【知识学习】阐述Unity3D中MaterialTexture的概念及使用方法示例

在Unity3D中,Material和Texture是渲染过程中非常重要的两个概念,它们共同工作以实现丰富的视觉效果。 Material Material是Unity中的一个组件,用于定义物体表面的视觉属性。一个Material可以包含多种属性,如颜色、纹理、反射率等…

道路救援入驻派单小程序开源版开发

道路救援入驻派单小程序开源版开发 1、用户立即救援 2、后台收到救援通知,派单救援师傅. 道路救援入驻派单小程序通常会包含一系列功能,旨在方便救援服务提供商、用户和后台管理系统之间的交互。以下是一个可能的功能列表: 用户端功能&…

第1章 物联网模式简介---独特要求和体系结构原则

物联网用例的独特要求 物联网用例往往在功耗、带宽、分析等方面具有非常独特的要求。此外,物联网实施的固有复杂性(一端的现场设备在计算上受到挑战,另一端的云容量几乎无限)迫使架构师做出艰难的架构决策和实施选择。可用实现技…

秋招Java后端开发冲刺——非关系型数据库篇(MongoDB)

MongoDB 本文介绍非关系型数据库MongoDB的基础知识和常见面试题。 (一)基础知识 1. 介绍:MongoDB是一个基于分布式文件存储的数据库,由C语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。 2.特点 特点…

Rust日常开发三方库精选

日常开发三方库精选 对计算机、编程、架构的理解决定一个程序员的上限,而工具则决定了他的下限,三尺森寒利剑在手,问世间谁敢一战。 本文就分门别类的精心挑选了一些非常适合日常开发使用的三方库,同时针对优缺点、社区活跃等进…

聚类距离度量(保姆级讲解,包学会~)

在机器学习的聚类中,我们通常需要使用距离来进行类的划分,或者比较不同类之间的各种距离,这里我们介绍西瓜书上所提出的一些距离计算方式。 首先介绍一下距离的一些性质: 西瓜书上给出了四条性质,第一个是非负性&#…

《高考择校择专业:权衡与抉择的智慧》

分数限制下,选好专业还是选好学校? 2024 年高考的大幕已然落下,然而对于众多考生而言,新的挑战才刚刚开始。在分数既定的情况下,是优先选择心仪的专业,还是更看重知名度高的学校?这无疑是一个令…

BW:CP里添加信息对象小问题记录

之前做视图直接添加进CP里,以为不能直接往CP里加信息对象,还专门建了一个带信息对象的模型,把信息对象拖到CP里,然后再链接视图的字段 今天发现原来不用这样,直接加就可以,小记一下 如图直接诶创建&#x…

网络安全学习路线图(2024版详解)

近期,大家在网上对于网络安全讨论比较多,想要学习的人也不少,但是需要学习哪些内容,按照什么顺序去学习呢?其实我们已经出国多版本的网络安全学习路线图,一直以来效果也比较不错,本次我们针对市…

uniapp横屏移动端卡片缩进轮播图

uniapp横屏移动端卡片缩进轮播图 效果&#xff1a; 代码&#xff1a; <!-- 简单封装轮播图组件:swiperCard --> <template><swiper class"swiper" circular :indicator-dots"true" :autoplay"true" :interval"10000&quo…

红队内网攻防渗透:内网渗透之内网对抗:横向移动篇Kerberos委派安全RBCD资源Operators组成员HTLMRelay结合

红队内网攻防渗透 1. 内网横向移动1.1 横向移动-资源约束委派-利用域用户主机加入1.1.1 利用思路1.1.2 利用条件1.1.3 利用过程1.2 横向移动-资源约束委派-Acount Operators组1.2.1 利用思路:1.2.2 利用条件:1.2.3 利用过程:1.3 横向移动-资源约束委派-CVE结合HTLMRelay1.3.…

Echarts 图表添加点击事件跳转页面,但只有图表部分点击才会跳转页面,坐标轴,区域缩放等点击不跳转。

默认的点击事件是这样的&#xff1a; myChart.on(click, function (param) {console.log(param) }) 这个事件需要点击具体图形才会触发&#xff0c;例如我上面的图&#xff0c;想选择a柱子&#xff0c;就需要明确点击到柱体才行&#xff0c;明显不符合正常的预期&#xff0c;正…

SolidWorks薄壁等厚实体转换成钣金方法

1. 打开SolidWorks软件&#xff0c;新建一个零件。选前视基准面绘制草图&#xff0c;二次创建凸台拉伸特征&#xff0c;如图所示。 2. 创建抽壳特征&#xff0c;厚度“2 mm”&#xff0c;如图所示。 3. 添加切口草图&#xff0c;根据钣金加工工艺在所选面上创建切口草图&#x…