Redis:事务

1. 简介

可以一次性执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序的串化执行,不允许被其他其他命令插入,不许加塞

即将要执行的命令放入队列中,此时该队列的所有命令就是一个事务,该队列会一次性、顺序性、排他性的执行该队列中的命令

2. Redis事务与数据库事务区别

1 单独的隔离操作
Redis的事务仅仅是保证事务里的操作会被连续独占的执行,redis命令执行是单线程架构,在执行完事务内所有指令前是不可能再去同时执行其他客户端的请求的
2 没有隔离级别的概念
因为事务提交前任何指令都不会被实际执行,也就不存在”事务内的查询要看到事务里的更新,在事务外查询不能看到”这种问题了
3不保证原子性
Redis的事务 不保证原子性,也就是不保证所有指令同时成功或同时失败,只有决定是否开始执行全部指令的能力,没有执行到一半进行回滚的能力
4 排它性
Redis会保证一个事务内的命令依次执行,而不会被其它命令插入

 3. 常用命令

3.1 正常执行

MULIT

EXEC 

 

3.2 放弃事务 

MULIT

DISCARD

DISCARD此时手动取消该事务 

 

 3.3 全体失效

由于事务内有命令语法编译错误,则该事务会全体失效,即所有命令都不执行 

3.4 部分失效

事务内部所有命令都符合语法规则,但是有些命令不符合数据类型规则,则不符合的命令将会失效(如:给邮箱号:a10086b@qq.com执行+1操作)

此时和传统关系型数据库是有区别的,传统关系型数据库的事务要么同时成功,要么同时失败,而Redsi数据库存在部分成功部分失败的可能

Redis不提供事务回滚的功能,开发者必须在事务执行出错后,自行恢复数据库状态 

 

3.5 watch监控 

Redis使用watcht提供乐观锁,类似于(check-and-set)CAS

悲观锁

 悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。

乐观锁

乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。

 

乐观锁策略:提交版本必须   大于   记录当前版本才能执行更新

加塞篡改

watch命令是一种乐观锁的实现,Redis在修改的时候会检测数据是否被更改,如果更改了,则执行失败

第一个窗口蓝色框第5步执行结果返回为空,也就是相当于是失败

 一旦执行EXEC操作,所有监控锁都会被取消

当客户端连接丢失时(如退出连接),所有东西都会被取消监控

4. 事务三部曲

 

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

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

相关文章

浏览器同源策略详解、主流的跨域解决方案、深入理解跨域请求概念及其根因

1. 什么是同源策略 跨域问题其实就是浏览器的同源策略造成的。 同源策略限制了从同一个源加载的文档或脚本如何与另一个源的资源进行交互。这是浏览器的一个用于隔离潜在恶意文件的重要的安全机制。同源指的是:协议、端口号、域名必须一致。 下表给出了与 URL http…

如何让你的C语言程序打印的log多一点色彩?(超级实用)

接着上一篇文章《由字节对齐引发的一场“血案“ 》 在平常的调试中,printf字体格式与颜色都是默认一致的。 如果可以根据log信息的重要程度,配以不同的颜色与格式,可以很方便的查找到要点。 1、printf字体显示语法说明 printf(“\033[显示…

Hive环境搭建(内置数据库)

实验目的】 1) 了解hive的作用 2) 熟练hive的配置过程(内置数据库) 【实验原理】 Hive的架构是由Client、Metastore、Driver、Compiler构成,执行流程是编译器可以将一个Hive QL转换成操作符,操作符是Hive中的最小处理单元。…

如何查看操作系统的性能指标:CPU、内存、磁盘、网络

目录 本系列专栏 CPU篇 CPU使用率:top CPU负载:uptime CPU核心使用情况:mpstat -P ALL 1 上下文切换:vmstat 1 CPU等待 IO时长:iostat -x 1 CPU的频率:lscpu 或者 cat /proc/cpuinfo | grep "cpu MHZ…

oracle读写时相关字符集详解

服务器端操作系统(Oracle linux)字符集 服务器端数据库字符集 客户端操作系统(Oracle linux)字符集 客户端工具sqlplus字符集 结论1:客户端工具sqlplus的会话,使用的字符集,是数据库字符集。…

Spring三级缓存是如何作用的

什么是三级缓存 singletonObjects: 一级缓存,用于保存实例化、注入、初始化完成的bean实例【完全体】earlySingletonObjects: 二级缓存,用于保存实例化完成的bean实例singletonFactories: 三级缓存,用于保…

java面向对象总结

java面向对象篇到这里就已经结束了,有什么不懂的地方可以逐一进行重新观看。希望大家能够从入门到起飞。 Java面向对象基础篇综合训练(附带全套源代码及逐语句分析)->基于javabeen Java面向对象进阶篇综合训练(附带全…

2024 Java 高分面试宝典 一站式搞定技术面

前言 每年9月和10月,被业界称为“金九银十”,这是人才市场一年中最活跃的时期。此时,企业为了来年的业务扩展,纷纷加大招聘力度,空缺岗位众多,招聘需求集中。同时,初秋的招聘活动也避开酷暑&am…

操作系统:高级IO

高级IO 1.关于IO IO的基本类型: I代表输入(Input): 从外部设备或来源(如键盘、鼠标、文件、网络)读取数据到计算机中。示例:用户键入的文本、从文件读取的数据、从网络接收到的数据包。 O代表输出(Output): 将计算机处理后的数据发…

git 版本回退-idea

1、选中项目,右键,打开 git历史提交记录 2、选中想要回退的版本,选择 hard(不保留版本记录) 3、最终选择强制提交(必须强制) OK,搞定

OpenCV 图像预处理—图像金字塔

文章目录 相关概念高斯金字塔拉普拉斯金字塔应用 构建高斯金字塔为什么要对当前层进行模糊?1. 平滑处理2. 减少混叠(Aliasing)3. 多尺度表示4. 图像降采样 举个栗子创建高斯金字塔和拉普拉斯金字塔,并用拉普拉斯金字塔恢复图像 相…

【PyTorch】基于YOLO的多目标检测项目(二)

【PyTorch】基于YOLO的多目标检测项目(一) 【PyTorch】基于YOLO的多目标检测项目(二) YOLO-v3网络由跨距为2的卷积层、跳跃连接层和上采样层组成,没有池化层。网络接收一幅416 * 416的图像作为输入,并提供三…

C++从入门到入土(三)--6个默认成员函数

目录 前言 什么是默认成员函数 构造函数 概念 特性 析构函数 概念 特性 拷贝构造函数 概念 特性 赋值运算符重载 特性 前言 很久没有更新文章了,最近把类和对象相关的知识重新回顾了一遍,打算从今天开始继续更新C从入门到入土系列。前面我们…

DVWA中SQL注入漏洞细说

SQL注入是一种安全漏洞,它允许攻击者通过影响Web应用程序的后端数据库。攻击者可以通过在输入字段中插入恶意SQL代码来执行非授权查询,从而获取或修改数据。 在开始启动SQL注入之前我们先将DVWA的安全等级调整到Low 1、我们在SQL Injection中输入 1 and…

Linux文件恢复

很麻烦 一般还是小心最好 特别恢复的时候 可能不能选择某个文件夹去扫描恢复 所以 删除的时候 用rm -i代替rm 一定小心 以及 探索下linux的垃圾箱机制 注意 一定要恢复到不同文件夹 省的出问题 法1 系统自带工具 debugfs 但是好像不能重启? testdisk 1、安装 …

Flink笔记整理(四)

Flink笔记整理(四) 文章目录 Flink笔记整理(四)六、Flink中的时间和窗口6.1 窗口(Window)窗口的概念窗口的分类窗口API概览窗口分配器窗口函数(Window Functions) 6.2 时间语义&…

MySQL的库操作和表操作

文章目录 MYSQLSQL语句分类服务器,数据库和表的关系 库操作表操作 MYSQL SQL语句分类 DDL【data definition language】 数据定义语言,用来维护存储数据的结构代表指令: create, drop, alterDML【data manipulation language】 数据操纵语言&#xff0…

关键路径算法(Critical Path)

这个算法《算法导论》中并没有提及,很多书和博客说的有点奇怪,所以写本文作为笔记。 关键路径是什么 关键路径的定义非常简单:就是一个图中,权值之和最大的路径就是关键路径。 那么就可以知道关键路径不唯一。 为什么有关键路…

安装 moleculeSTM 踩坑日记

“学习 LLM ,在大模型时代为自己存张船票”。 相信很多人都有这样的想法。那么,在 AI for science 领域,哪些 LLM 模型值得一试呢? 笔者认为: LLM 直接预测 SMILES 性质 or 直接生成 SMILES 的技术路线是行不通的。因…