Redis__事务

文章目录

😊 @ 作者:Lion J
💖 @ 主页: https://blog.csdn.net/weixin_69252724
🎉 @ 主题:Redis__事务
⏱️ @ 创作时间:2024年05月02日
————————————————

这里写目录标题

  • 文章目录
    • Redis事务:
    • 开始Redis事务
      • Redis 事务支持原子性吗?
      • Redis 事务支持持久性吗?

Redis事务:

MySQL里的事务就是将多条语句看作是一个原子操作, 要么同时执行要么同时失败.
Redis事务是指将多条命令加入队列,一次批量执行多条命令,每条命令会按顺序执行,事务执行过程中不会受客户端传入的命令请求影响。

Redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。

既然提出来了MySQL事务, 那就看一下他和MySQL事务有什么区别:
Redis事务和关系型数据库的事务不太一样,它不保证原子性,也没有隔离级别的概念。

  • Redis事务没有隔离级别的概念
    批量操作在发送 EXEC 命令前被放入队列缓存,并不会被实际执行,也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到。
  • Redis不保证原子性
    Redis中,单条命令是原子性执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余的命令仍会被执行。

在这里插入图片描述

在上面的例子中, Redis中的两个用户, 分别对同一个数据进行操作, 用户1 set 了name 这个值, 用户2 又对这个值进行操作, 如然后在客户1这边获取name值, 会发现不是自己设置的值, 值是用户2的值

对于这样的问题, 就提出来Redis事务

思考:

那么,我如果在用户1将他的操作作为一个整体, 有序的进行, 其他客户的命令不能插入到这个整体里, 那不就解决这个问题了吗?

确实, 是这样的

开始Redis事务

multi  # 开启事务set name jwq
get name
set name cxy
keys *
exec # 执行事务

如果你在写redis命令时候, 发现已经将错误的redis命令入队列了, 那么需要取消事务该怎么做?

discard # 取消事务

如图:
在这里插入图片描述

Redis相关的命令如下:

  • MULTI:标识一个事务的开启,即开启事务;
  • EXEC:执行事务中的所有命令,即提交;
  • DISCARD:放弃事务;和回滚不一样,Redis事务不支持回滚。
  • WATCH:监视Key改变,用于实现乐观锁。如果监视的Key的值改变,事务最终会执行失败。
  • UNWATCH:放弃监视。

Redis 事务支持原子性吗?

Redis 事务在运行错误的情况下,除了执行过程中出现错误的命令外,其他命令都能正常执行。并且,Redis 事务是不支持回滚操作的。因此,Redis 事务其实是不满足原子性的。

Redis 事务支持持久性吗?

Redis 不同于 Memcached 的很重要一点就是,Redis 支持持久化,而且支持 3 种持久化方式:快照(snapshotting,RDB)只追加文件(append-only file, AOF)RDB 和 AOF 的混合持久化(Redis 4.0 新增)与 RDB 持久化相比,AOF 持久化的实时性更好。在 Redis 的配置文件中存在三种不同的 AOF 持久化方式( fsync策略),它们分别是:

appendfsync always    #每次有数据修改发生时都会调用fsync函数同步AOF文件,fsync完成后线程返回,这样会严重降低Redis的速度
appendfsync everysec  #每秒钟调用fsync函数同步一次AOF文件
appendfsync no        #让操作系统决定何时进行同步,一般为30秒一次

在上一文 Reidis__持久化 有介绍到

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【hackmyvm】vivifytech靶机

渗透思路 信息收集端口扫描端口服务信息目录扫描爆破hydra--sshgit提权 信息收集 ┌──(kali㉿kali)-[~] └─$ fping -ag 192.168.9.0/24 2>/dev/null 192.168.9.119 --主机 192.168.9.164 --靶机个人习惯,也方便后续操作,将IP地址赋值给一个变…

微软如何打造数字零售力航母系列科普07 - Azure PlayFab:你从未想过的世界上最大的开发工具(平台)

Azure PlayFab:你从未想过的世界上最大的开发工具 微软的James Gwertzman告诉GamesIndustry.biz Academy他帮助开发者成功的使命 制作游戏比以往任何时候都更容易上手。现在有无数的游戏引擎可供选择,其中大多数是免费的,PC空间的店面也同样重…

高中数学:三角函数公式汇总及推导

一、定义 常用三角函数值 参考: 三角函数定义 二、基本三角函数及相互关系 sinx cosx tanx cscx secx cotx 函数间相互关系 参考: cosx、sinx、tanx的函数图像与性质 secx、cscx、cotx函数图像及相关关系 三、诱导公式 口诀:奇变…

RK3568平台(时间篇)看门狗

一.看门狗原理 在产品化的嵌入式系统中,为了使系统在异常情况下能自动复位,一般都需要引入看门狗。 看门狗其实就是一个可以在一定时间内被复位的计数器。当看门狗启动后,计数器开始自动计数,经过一定时间,如果没有被…

私有开源LLM实例的三个考虑因素

原文地址:three-considerations-for-private-open-source-llm-instances 2024 年 4 月 29 日 在生产应用中使用商业 LLM APIs 会带来明确且经过充分研究的风险。因此,企业越来越多地转向利用开源的私有托管LLM实例,并通过RAG技术进行增强。 介…

25 JavaScript学习:var let const

JavaScript全局变量 JavaScript中全局变量存在多种情况和定义方式,下面详细解释并提供相应的举例: 使用var关键字声明的全局变量: var globalVar "我是全局变量";未使用var关键字声明的变量会成为全局变量(不推荐使用&…

MathType如何使用LaTex代码编辑公式?MathType使用LaTex代码编辑公式教程 mathtype高仿latex

MathType专为解决数学公式输入问题打造,内置有自定义函数识别、国际性字符输入、拖放表达式、标签命名等丰富的功能,下面就来看看如何使用LaTex代码编辑公式吧。 MathType使用LaTex代码编辑公式教程 第一步:首先打开软件,并准备…

海亮杯总结

写在前面: 1001003002020270,rnk42,超级菜 你说的对,但是《第三届“海亮杯”》是由海亮教育集团自主研发的一款全新开放世界冒险游戏。游戏发生在一个被称作「浙江省诸暨海亮高级中学」的幻想世界,在这里,…

【电子取证篇】WinHex哈希校验值大小写转换和WinHex常规设置功能

【电子取证篇】WinHex哈希校验值大小写转换和WinHex常规设置功能 简单记录下WinHex哈希校验大小写值转换和新增加的一些功能、常用设置,WinHex时不时增加点小功能的,挺喜欢这种的,像挖宝藏一样,总会给你一些惊喜—【蘇小沐】 1、…

Python基础学习之sys.argv[0]及类似方法

前言 在Python编程中,经常会遇到要拿取当前代码路径或者当前代码名称,今天分享几个拿取的方法。 一.功能目的 拿取当前代码路径或者当前代码名称。 二.功能调研 根据搜索引擎,我们可以提取到以下信息: 1.sys.argv[0] 是脚本自身…

在浏览器中查看Revit模型:原理及实现

Greg Schleusner AIA 有一天向我提到,业内许多人认为带有 SVF2 的 Autodesk Viewer 是建筑模型最强大、性能最强的在线查看器之一,并且想知道开源 VIM 查看器和格式如何比较。 可以使用NSDT 3DConvert的 Revit插件 上传你的模型并在线查看预览&#xff…

全新神经网络架构KAN一夜爆火!200参数顶30万,MIT华人一作 | 最新快讯

白交衡宇发自凹非寺 量子位公众号 QbitAI 一种全新的神经网络架构 KAN,诞生了! 与传统的 MLP 架构截然不同,且能用更少的参数在数学、物理问题上取得更高精度。 比如,200 个参数的 KANs,就能复现 DeepMind 用 30 万参数…

如何同时或者按顺序间隔启动多个程序

首先,需要用到的这个工具: 度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 1、打开工具,切换到定时器模块,快捷键:Ctrl3 2、新建一个定时器,我这里演示同时打开多个程序(比…

WPF基础应用

WPF参考原文 MVVM介绍 1.常用布局控件 1.1 布局控件 WPF(Windows Presentation Foundation)提供了多种布局容器来帮助开发者设计用户界面,以下是一些常用的布局: Grid: Grid是最常用的布局容器之一,它允许你通过定…

链表经典面试题上

目录 创作不易,如若对您有帮助,还望三连,谢谢!!! 题目一:203. 移除链表元素 - 力扣(LeetCode) 题目二:206. 反转链表 - 力扣(LeetCode&#xff…

22-ESP32-S3模数转换器(ADC)

ESP32-S3模数转换器(ADC) 什么是模数转换器(ADC)🔍? 模数转换器(ADC)是一种将模拟信号(如电压)转换为数字信号的设备。在ESP32-S3中,ADC用于将模…

深入图像分类:使用美国手语数据集训练定制化神经网络

引言 在前一篇博客中,我们探讨了如何使用MNIST数据集训练一个基础的神经网络来进行手写数字识别。在本文中,我们将更进一步,使用美国手语字母表(ASL)数据集来构建一个定制化的图像分类模型。通过这个过程,…

羊大师:羊奶营养好选择

羊大师:羊奶营养好选择 羊奶确实是一种营养丰富的饮品,它被视为乳品中的精品,被称为“奶中之王”是世界上公认的最接近人奶的乳品。以下是一些羊奶的主要营养成分和其对人体的益处: 蛋白质:羊奶中的蛋白质含量丰富&a…

k8s部署maven项目

failed to verify certificate: x509: certificate signed by unknown authority 今天在执行kubectl get nodes的时候报的证书验证问题,看了一圈首次搭建k8s的都是高频出现的问题。 couldn’t get current server API group list: Get “https://kubernetes.docker…

什么是死锁?代码演示,死锁如何排查和解决

死锁的概念 死锁是指在多线程或多进程中,两个或两个以上的线程或进程在执行过程中,因抢夺资源而造成的一种相互等待的现象。简单来说,就是两个或两个以上的线程或进程都在等待对方释放资源,从而导致所有线程或进程都无法继续执行的…