【Redis】Redis 事务

        Redis 的事务的本质是一组命令的批处理。这组命令在执行过程中会被顺序地、一次性 全部执行完毕,只要没有出现语法错误,这组命令在执行期间不会被中断

1.事务特性

        仅保证了数据的一致性

        这组命令中的某些命令的执行失败不会影响其它命令的执行,不会引发回滚。不具备原子性

        这组命令通过乐观锁机制实现了简单的隔离性。没有复杂的隔离级别

        这组命令的执行结果是被写入到内存的,是否持久取决于 Redis 的持久化策略,无持久性

2.事务实现

     2.1.三个命令

        1)muti:开启事务

        2)exec:执行事务

        3)discard:取消事务

     2.2.基本使用

        定义并执行事务:

        799990d9d51446c88b8e7b9966796e31.png

        定义并取消事务:

         5632fe37db2541af9ed2927251c37c5b.png

3.事务异常处理

     3.1.语法错误

        当事务中的命令出现语法错误时,整个事务在 exec 执行时会被取消

4c9677e2087146b2856fe89f8d4821a4.png135a1444e6f7456fa20ee7ffcdbe4e3a.png

     3.2.执行异常

        如果事务中的命令没有语法错误,但执行过程中出现异常,该异常不会影响其它命令的执行

4.事务隔离机制

        在并发场景下可能会出现多个客户端对同一个数据进行修改的情况,为了解决这种情况,事务通过乐观锁机制实现了多线程下的执行隔离

     4.1.隔离的实现

        通过 watch 命令再配合事务实现了多线程下的执行隔离

     4.2.实现原理

        1)当某一客户端对 key 执行了 watch 后,系统就会为该 key 添加一个 version 乐观锁,并 初始化 version。例如初值为 1.0

        2)客户端 A 将对该 key 的修改语句写入到了事务命令队列中,虽未执行,但其将该 key 的 value 值与 version 进行了读取并保存到了当前客户端缓存。此时读取并保存的是 version 的初值 1.0

        3)客户端 B 对该 key 的值进行了修改,这个修改不仅修改了 key 的 value 本身,同时也增加了 version 的值,例如使其 version 变为了 2.0,并将该 version 记录到了该 key 信息中

        4)客户端 A 执行 exec,开始执行事务中的命令。不过,其在执行到对该 key 进行修改的命令时,该命令首先对当前客户端缓存中保存的 version 值与当前 key 信息中的 version 值。如果缓存 version 小于 key 的 version,则说明客户端缓存的 key 的 value 已经过时,该写操作如果执行可能会破坏数据的一致性。所以该写操作不执行

        

        

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JVM】ASM开发

认识ASM ASM是一个Java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。 ASM可以直接产生二进制class文件,也可以在类被加载入虚拟机之前动态改变类行为,ASM从类文件中读入信息后能够改变类行为,分析类信息&#xff…

课程设计 大学生竞赛系统

课程设计 大学生竞赛系统 wx:help-assignment 学生用户: wx:help-assignment 首页:推荐一些竞赛,热门活动等; 广场:用户可以通过广场来发表动态,同时也可以查看别人发布的动态,并且可以 关注…

解决常见的Android问题

常见问题: 1、查杀: 查杀一般分为两个方向一种是内存不足的查杀,一种的是因为温度限频查杀,统称为内存查杀,两个问题的分析思路不同 1、内存不足查杀: 主要是因为当用户出现后台运行多个APP或者是相机等…

汇昌联信科技:拼多多可以做无货源吗?

在探讨电商平台的经营模式时,"无货源"这一概念经常被提及。它指的是卖家在不需要事先囤积大量商品的情况下,通过与供应商的合作,直接将订单信息传递给他们,由供应商完成发货的过程。针对“拼多多可以做无货源吗?”这一…

内网渗透之如何批量PTH获取主机权限?

—— 利用CrakMapExec工具进行全网段批量PTH CrackMapExec(CME)是一款后渗透利用工具,可帮助自动化大型活动目录(AD)网络安全评估任务。其缔造者byt3bl33d3r称,该工具的生存概念是,“利用AD内置功能/协议达成其功能&…

【练习2】

1.汽水瓶 ps:注意涉及多个输入&#xff0c;我就说怎么老不对&#xff0c;无语~ #include <cmath> #include <iostream> using namespace std;int main() {int n;int num,flag,kp,temp;while (cin>>n) {flag1;num0;temp0;kpn;while (flag1) {if(kp<2){if(…

2024数维杯B题详细思路代码数学建模高质量保姆级

2024年第九届数维杯大学生数学建模挑战赛题目 B 题 生物质和煤共热解问题的研究 &#xff08;1&#xff09;基于附件一&#xff0c;请分析正己烷不溶物(INS)对热解产率&#xff08;主要 考虑焦油产率、水产率、焦渣产率&#xff09;是否产生显著影响&#xff1f;并利用图像 加…

工业机器人应用实践之玻璃涂胶(篇二)

工业机器人 接上篇文章&#xff0c;浅谈一下实践应用&#xff0c;具体以玻璃涂胶为例&#xff1a; 了解工业机器人在玻璃涂胶领域的应用认识工具坐标系的标定方法掌握计时指令的应用掌握人机交互指令的应用掌握等待类指令用法&#xff08;WaitDI、WaitUnitl 等&#xff09;认…

n5.树(中)

1、二叉树的遍历 1.1先序、中序、后序遍历 先序遍历 根->左->右 先序遍历先访问根节点&#xff0c;再访问它的左子树&#xff0c;然后访问它的右子树。对于每次访问到的结点&#xff0c;都要递归地访问左子树、后右子树———递归。 创建 typedef struct TreeNode*…

飞跨电容型的三电平(FC-NPC)逆变器simulink仿真模型

本人搭建了飞跨电容型的三电平逆变器simulink仿真模型&#xff0c;相较于二极管钳位型三电平逆变器而言&#xff0c;钳位二极管变为飞跨的电容。采用SPWM调制和均流均压控制&#xff0c;通过搭建仿真模型得到三电平波形。 三电平拓扑中的飞跨电容是指在电路的输出端使用电容来实…

书生作业:LMDeploy

自己随便说几句。 关于模型部署&#xff0c;很有趣的一件事就是&#xff0c;它一路随着深度学习训练一起发展&#xff0c;尽管例如tensorrt等工具的出现&#xff0c;不断试图降低部署门槛&#xff0c;但是实际上&#xff0c;每一次AI的升级&#xff0c;似乎让这个细分领域没有…

图片格式不对怎么转换?推荐几个图片转换的高效处理方法

在日常使用电脑或处理图片的过程中&#xff0c;我们经常会遇到图片格式不兼容的问题&#xff0c;例如&#xff0c;我们可能收到了一个无法打开的图片文件&#xff0c;或者想将图片转换为其他格式以便在不同的应用程序中使用&#xff0c;这时候就需要将图片转格式&#xff0c;所…

如何让组织充满活力?你需要做好这七步

组织活力&#xff0c;通俗点说就是&#xff1a; 从竞争对手角度看&#xff0c;组织活力强的组织能做到竞争对手做不到的事情&#xff1b; 从客户角度看&#xff0c;组织活力强的组织&#xff0c;客户感受好&#xff1b; 从员工角度看&#xff0c;组织活力强的组织&#xff0c…

基于单片机的直流电机检测与控制系统

摘要&#xff1a; 文章设计一款流电机控制系统&#xff0c;以 STC89C51 作为直流电机控制系统的主控制器&#xff0c;采用 LM293 做为驱动器实现 对直流电机的驱动&#xff0c;采用霍尔实现对直流电机速度的检测&#xff1b;本文对直流电机控制系统功能分析&#xff0c;选择确…

WAAP全站防护理念,发现和保护敏感数据

数据是现代企业的新石油&#xff1a;正确使用它可以促进公司的发展并帮助企业在竞争中领先。就像石油一样&#xff0c;原始数据和未被发现的数据是毫无用处的&#xff0c;企业将无法从中受益&#xff1b;在最坏的情况下&#xff0c;它可能会导致安全事件。这也是企业投资敏感数…

A计算机上的程序与B计算机上部署的vmware上的虚拟机的程序通讯 如何配置?

环境&#xff1a; 在A计算机上运行着Debian11.3 Linux操作系统&#xff1b;在B计算机上运行着Windows10操作系统&#xff0c;并且安装了VMware软件&#xff0c;然后在VMware上创建了虚拟机C并安装了CentOS 6操作系统 需求&#xff1a; 现在A计算机上的程序需要同虚拟机C上的软…

【负载均衡式在线OJ项目day6】源文件路由功能及文件版题库构建

一.前言 前文讲到了OJ模块的设计思路&#xff0c;毫无疑问这是一个网络服务&#xff0c;我们先使用httplib&#xff0c;将源文件的路由功能实现&#xff0c;先把框架写好&#xff0c;后续再更改回调方法。 随后计划编写Modify模块&#xff0c;提供增删查改题库的功能(主要是查…

【贪心算法】最小生成树Kruskal算法Python实现

文章目录 [toc]问题描述最小生成树的性质证明 Kruskal算法Python实现时间复杂性 问题描述 设 G ( V , E ) G (V , E) G(V,E)是无向连通带权图&#xff0c; E E E中每条边 ( v , w ) (v , w) (v,w)的权为 c [ v ] [ w ] c[v][w] c[v][w]如果 G G G的一个子图 G ′ G^{} G′是…

acer笔记本怎样进行系统还原?教你两招!

acer笔记本怎样进行系统还原&#xff1f;教你两招&#xff01; 作为笔记本用户&#xff0c;你在日常使用中可能会遇到各种各样的电脑问题。一般来说&#xff0c;对于一些小问题&#xff0c;我们可以通过一些简单的操作来解决&#xff0c;比如重新启动电脑或者长按电源键强制关机…

提高静态住宅代理稳定性妙招

在数字化时代的浪潮中&#xff0c;静态住宅代理因其独特的优势&#xff0c;如固定的IP地址、更高的隐私保护性等&#xff0c;逐渐成为网络爬虫、数据分析等领域不可或缺的工具。然而&#xff0c;静态住宅代理的稳定性问题一直是用户关注的焦点。本文将为您揭示提高静态住宅代理…