redis-事务操作

news/2025/9/28 11:09:40/文章来源:https://www.cnblogs.com/rslStudy/p/19116251

redis-事务操作

redis事务本质上是一组命令的批处理,这组命令在执行过程中会被顺序性、一次性全部执行,只要没有出现语法错误,
这组命令在执行期间是不会被中断。
redis事务特性
redis事务仅保证了数据的一致性,不具有像数据库(例如mysql)一样的ACID特性。

  • 这组命令中的某些命令如果执行失败是不会影响其他命令的执行的,也不会回滚。即不具备原子性。
  • 这组命令可以通过乐观锁机制实现简单的隔离性。
  • 这组命令的执行结果会被写入到内存中,是否持久取决于redis的持久化策略,与事务无关。
    命令
    1.multi: 开启事务
    2.exec: 执行事务
    3.discard: 取消事务
    隔离的实现
    redis通过watch命令添加乐观锁再配合事务实现了多线程下的执行隔离。
    1.当一个客户端a对key执行了watch命令后,系统就会为该key添加一个version(版本),并进行初始化操作,例如为1。
    2.然后该客户端a通过muti命令开启事务,然后将对该key的修改操作添加到事务命令队列中,此时我们还没有
    执行该事务,但是redis已经将该key的value和version保存到了自己客户端缓存中,此时version为1。
    3.然后另外有一个客户端b对该key进行了修改操作,这个修改不仅修改了key的value同时也增加了version的值,例如
    使version增加了1,变为了2。
    4.然后客户端a执行exec命令执行事务。当它执行到对key的修改命令的时候,会先对自己客户端中保存的version和当前key中的
    version值进行比较。如果缓存中的version小于key中的version,说明当前客户端缓存的key的value已经过时,执行该修改操作的话可能
    会破坏数据的一致性,所以不会执行该修改操作。
    注意:当事务执行之后,无论是否执行成功,那么对watch的key的监控就会消失,也可以通过UNWATCH命令取消对key的监控。
    不使用watch和事务的多线程修改操作
    image
    image
    image
    使用watch和事务的多线程修改操作
    image
    image
    image
    image
    image

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

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

相关文章

【2025-09-26】奋斗逻辑

20:00让自己成为爱的磁铁,散发着温暖与光芒。用善良做你的引力,用宽容做你的磁场。吸引每一颗渴望爱的心,让他们感受到你的温柔给予,不要期待回报,因为爱本身就是最好的礼物。当你成为爱的源头,爱将如潮水般涌来…

【Linux基础知识系列:第一百四十篇】理解SELinux与系统安全 - 教程

【Linux基础知识系列:第一百四十篇】理解SELinux与系统安全 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &quo…

Elasticsearch 7.15索引模板介绍 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

关于修改 linux 系统中优先使用中文结构

1. 安装常用中文字体 首先确保系统安装了常用的中文字体,比如 Noto Sans CJK 或 WenQuanYi: sudo apt update sudo apt install fonts-noto-cjk fonts-wqy-zenhei fonts-wqy-microheifonts-noto-cjk:Google 的开源中…

河源市连平县建设局网站wordpress 文章最长

一、概述 本文基于spring-boot-starter-websocket简单的完成收发信息功能,使用注解形式进行实现。 二、相关配置 spring:2.0.2,jdk:1.8.202,maven:3.3.9 因为spring和maven有版本匹配的要求,请大家注意自己的版本是否匹配 三…

晋城购物网站开发设计手机购物网站开发

一、云计算 云计算起源仿照天空的云朵聚集,意为对大量服务器的远程管理。以便能对服务器做空间、资源的最大动态协调利用和降低操作执行命令的复杂度。 二、云计算衍生下的服务 在服务器以一种云的形式存在,衍生除了很多服务提供,以便用户可以…

网站开发技术流程商标查询官网入口

Linux 系统管理员要求对系统进行管理,备份等操作,linux程序员需要掌握c,c,java,php,jsp等 Linux平台上的开发,包括vi,gcc,gdb,make,jdk,tomcat,mysql… 书籍介绍:鸟哥LINUX私房菜,LINUX编程从入门到精通,li…

Discord桌面应用远程代码执行漏洞分析

本文详细分析了Discord桌面应用中存在的远程代码执行漏洞,包括缺失上下文隔离、iframe嵌入XSS和导航限制绕过三个漏洞的组合利用。作者通过覆盖JavaScript内置方法干扰Node.js模块执行,最终实现任意代码执行。漏洞已…

DRL模型训练:原始奖励函数记录以及绘制

一些参考图片:1. 使用sb3库, 调用callback,会记录每个episode结束时的reward; 使用tensorboard记录的rollout/ep_rew_mean,会自动每4个ep平均,并进行平滑,得到的不是原始数据。 from stable_baselines3.common.ca…

python的批量赋值语法

python的批量赋值语法 漫思

丽江市网站建设制作学校校园网网站建设预算

文章目录 1. 基于神经网络计算心理健康程度2. 添加激活函数的神经网络计算3. 使用神经网络预测小胖是否会变胖4. 激活函数选择的讨论5. 神经网络的设计6. 深度线性模型的表达能力线性模型7. 神经网络退化 主要讨论的内容 什么是人工神经网络,相关计算反向传播算法的…

泊头市网站建设价格百度网站排名 查询

JAVA代码编写 203. 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5]示…

中国DevOps平台竞品分析:安全合规与技术生态的双重较量

中国DevOps平台竞品分析:安全合规与技术生态的双重较量 在数字化转型进入深水区的当下,DevOps平台作为企业研发效能的核心支撑,其选择直接关系到组织的创新效率和合规安全。2025年的中国市场上,Gitee、阿里云效和G…

experiment 1

实验目的会使用C语言程序开发环境(vs2010/devc++等),能熟练使用其编写、编译、运行、调试C程序 知道C程序结构和编码规范,能正确使用 能熟练使用C语言输入输出函数: scanf() , printf() , getchar() , putchar() …

做网站无锡单网页网站内容

在本机启动 http 服务,在你要下载文件的目录下输入 cmd ,运行 python -m http.server前提条件:本机安装了 python 服务。 查看本机 IP(无线局域网 IP),重新开一个窗口,查看本机 IP 地址。 ipc…

图领域的METIS算法介绍 - zhang

1. 算法来源 来源论文 论文题目: Partial Parallelization of Graph Partitioning Algorithm METIS 2. METIS算法 主要用于将大规模稀疏图高效划分为多个均衡子图,用于并行计算任务分配,VLS布局优化,有限元网络剖分…

【Double】浮点数:精确的小数计算

【Double】浮点数:精确的小数计算在编程中,浮点数(Double) 用于表示带小数点的数值。当我们需要进行精确的小数计算时,浮点数比整数更加适用。浮点数可以表示非常大或非常小的数值,并保持一定的精度。 一、 认识…

贵州高端建设网站特效视频素材网站

NPM NPM 的全称是 Node Package Manager,是随同 NodeJS 一起安装的包管理和分发工具,它很方便让 JavaScript 开发者下载、安装、上传以及管理已经安装的包。 官网 npm 官网:https://www.npmjs.com npm 命令 命令说明npm init初始化一个新的…

CANOpen safety SRDO相关问题总结

CANOpen PDO过程大家经常会使用,交互过程也比较熟悉,但是safety协议以及SRDO流程基本上都不是很熟悉,参考标准D301和D304 今天把最近研究SRDO的内容和现场调试的心得做一个总结