Redis与MySQL中事务的区别

高动态范围结构光三维测量技术:从多曝光融合到深度学习的演进与应用 本文深入探讨了高动态范围结构光三维测量技术的演进与应用,从传统的多曝光融合技术到深度学习驱动的创新方案。通过工业案例展示了该技术在提升测量精度和效率方面的显著优势,特别是在处理高反光、复杂表面时的突破性表现。文章还提供了针对不同工业场景的技术选型指南,帮助工程师优化三维测量解决方案。 阅读详情

1、mysql中只有使用了InnoDB引擎的数据库或表才支持事务;
2、使用“事务”的目的是:统一管理insert,update,delete这些写操作,以此来维护数据的完整性。

事务命令

mysql:

begin	  #显式地开启一个事务
commit	  #提交事务,对数据库进行的所有写操作变为永久性的
rollback  #结束用户的事务,并撤销正在进行的所有未提交的写操作

redis支持简单的事务:

multi		#标记事务的开始
exec		#执行事务的commands队列
discard		#结束事务,并清除commands队列

通过类比msyql来理解redis的事务命令,很显然,它们有着本质区别。

redis和mysql事务的对比(不能回滚):

		  mysql		   				     redis
开启	  start transaction/begin	     multi		
语句	  SQL						     命令	
失败	  roolback回滚				     discart取消
成功	  commit提交					 exec执行事务的命令队列	

roolback和discard的区别:
如果已经成功执行了2条语句,第3条语句出错。roolback后前面2条语句的影响小时;discard只是结束本次事务,前面2条语句造成的影响仍然存在。

在multi后面的语句出错可能有两种情况:
1、语法就有问题。(这种exec时报错,所有语句都不执行)
2、语法本身没有错,但使用对象有问题。比如zadd命令操作link对象,exec之后回执行正确的语句并跳过不适当的语句。

思考:悲观锁和乐观锁

我正在买票:

ticket -1;
money -100;
#票减1,钱减100

而如果票只有1张,如果在multi之后exec之前,票被其他人买走了,即ticket变为0了。
我该如何观察这种情况,并不在提交?

悲观的想法:有人和我抢,给ticket加锁,只有我能操作。(悲观锁)
乐观的想法:我只需要注意有没有人更改ticket的值就可以了。(乐观锁)

redis的事务中,启动的是乐观锁,只负责监测key有没有被改动

Redis Watch 命令

Redis Watch 命令用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断

redis Watch 命令基本语法如下:

WATCH key [key ...]

还是结合上面买票业务来理解:

redis> watch ticket				#监视ticket这个key
OK
redis> multi					#开启事务
OK
redis> decr tickert				#票减去1(注意我们这里只有一张票)
QUEUED
redis> decrby monery 100
QUEUED
redis> exec
(nil)							#返回nil说明监视的tiket已经改变了,事务就取消了
【29】软考软件设计师——SQL语句编写与优化深度精讲|数据库大题延伸满分攻略 本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第29篇,承接第28篇ER图转关系模式核心内容,作为**下午第2题数据库大题核心延伸必考模块**,单模块累计占分5~8分,是数据库板块性价比极高的提分重点。全文超4000字深度拆解软考全部SQL高频考点:全覆盖多表连接底层逻辑、嵌套子查询分类实操、GROUP BY分组聚合硬核规则、索引全品类设计原理、联合索引最左匹配底层机制,搭配海量可直接复刻的考场SQL模板、历年真题完整改写案例、索引失效场景实操复盘、慢查询优化落地技巧。 阅读详情

相关推荐

STC8H DMA 串口1全双工中断方式收发通讯C语言

串口1全双工中断方式收发通讯程序。 通过PC向MCU发送数据, MCU将收到的数据自动存入DMA空间. 当DMA空间存满设置大小的内容后,通过串口1的DMA自动发送功能把存储空间的数据原样返回. 用定时器做波特率发生器,建议使用1T模式(除非低波特率用12T),并选择可被波特率整除的时钟频率,以提高精度。

czhaii的专栏 1466

MySQL 和 Redis 事务的区别

目录MySQL 和 Redis 事务的区别事务的四大特性命令行执行事务的命令实现原理Go 语言开启事务代码 MySQL 和 Redis 事务的区别 redis 事务不支持原子性和持久性,并且 mysql 事务与 redis 事务的实现原理不同 事务的四大特性 ACID,事务的四大特性缩写:原子性 (Atomicity)、一致性 (Consistency)、隔离性 (Isolaction)、持久性 (Durability) 原子性 一个事务内所有操作就是最小操作单元,要么全部成功,要么全部失败 一致性 应用系

weixin_41335923的博客 3114

3. ChaosBlade-Box平台安装

参考自:https://chaosblade.io/docs/about-chaosblade/box-introduce/通过ChaosBlade-Box可实现chaosblade等已托管工具自动化部署,按照社区的建立的混沌实验模型统一实验场景,根据主机、Kubernetes、应用来划分目标资源,通过目标管理器来控制,在实验创建页面,可以实现白屏化的目标资源选择。

lldhsds的专栏 2485

redis与mysql事务区别

(比如mysql通过select for update对读取的数据行进行加锁,可以防止事务提交前数据被其他人修改,而对于读,允许其他人的select,但是其他人的select for update 则不允许(这种方式不会长时间挂起其他客户端,但是又会有锁?mysql的事务默认可重复读级别,串行化隔离级别可以防止幻读,由于redis事务中事务中查询指令无效,故不存在这类问题,mysql事务中可以有其他人的语句乱入,mysql通过加锁方式,保证被锁的资源不会被其他人存取,保证事务全程可重复读。

weixin_57763462的博客 568

别再为跨页读写发愁了!STM32F407模拟I2C驱动24C256/512的避坑指南

本文详细解析了STM32F407模拟I2C驱动24C256/512的跨页写入问题,揭示了24C系列存储器'写满一页不会自动翻页'的关键机制,并提供了经过验证的分页写入算法和优化方案。通过GPIO时序优化、地址计算和错误处理等技巧,帮助开发者解决数据错乱、覆盖等常见问题,实现稳定可靠的EEPROM读写操作。

weixin_42631411的博客 376

Windows系统下com0com虚拟串口安装与驱动签名禁用全攻略

本文详细介绍了在Windows系统下安装com0com虚拟串口工具的全过程,包括驱动签名问题的解决方法。通过禁用驱动程序强制签名,用户可以顺利安装并使用这款开源工具创建虚拟串口对,适用于软件开发测试、硬件调试等场景。文章还提供了验证虚拟串口功能的实用技巧和常见问题解决方案。

weixin_28720573的博客 385

redis事务以及与mysql事务的区别

Redis 事务更适合一系列简单的命令的原子性操作,而 MySQL 事务更适合复杂的 SQL 操作,提供了更强的隔离性和持久性保证。Redis 在事务执行期间不会为事务中的命令加锁,而是在 EXEC 阶段检查事务中是否有其他客户端对 WATCH 的键进行了修改。Redis 事务是单命令的原子性,即事务中的每个命令要么全部执行成功,要么全部回滚。EXEC 命令用于触发事务执行,之后所有事务中的命令会一次性执行。事务开始于 MULTI 命令,该命令标记一个事务的开始,之后所有的命令都被视为事务的一部分。

Alaskan_Husky的博客 349

5款免费二进制编辑器横向评测:从HxD到ImHex谁更适合你?

本文对5款免费二进制编辑软件进行深度横向评测,包括HxD、wxHexEditor、010 Editor、ImHex和GNU Emacs,涵盖从轻量级到专业级的各种需求。评测基于文件处理能力、编辑功能、分析工具等核心维度,为开发者、逆向工程师和安全研究人员提供实用选择指南,帮助用户根据具体场景选择最适合的二进制编辑工具。

weixin_29278805的博客 371

一文带你了解 MySQL 和 Redis 事务实现对比

我们都知道,如果要实现事务,需要整体保证 ACID(A-原子性|C-持久性|I-隔离性|D-一致性) ,其中一致性是目标,原子性、持久性和隔离性都是手段,所以这里对比一下 MySQL 和 Redis 在事务实现上的区别,当然严格意义上来说,Redis 由于不满足原子性,不能算真正意义上实现了事务。 原子性 MySQL - 原子性 MySQL 的原子性是通过 undolog 保证的,undolog 是 MySQL 的回滚日志,保存的是数据的历史版本,通过历史版本让数据在任何时候都可以回滚到某一个事务开始之

hunterzhang86的博客 883

芒果YOLO11改进59:分类损失函数Loss篇FocalLoss:即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

即插即用|最新改进FocalLoss损失函数,提高处理不平衡数据分类场景下的任务性能,提升YOLO11检测精度

包括YOLOv5、YOLOv7、YOLOv8等模型改进 548

华为OD机试 新系统 双机位C卷 真题题库目录|机考题库 + 算法考点详解

本文整理华为OD机试(机考) 新系统真题题库,提供高频考点精析与详细题目内容,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解 和 在线OJ做题练习。华为OD机试新系统真题题库。

qq_45776114的博客 10万+

Redis事务与MYSQL事务区别

Redis与MySQL事务对比摘要: Redis事务基于命令队列(MULTI/EXEC),提供简单原子性但缺乏完整ACID支持,适合高性能场景如秒杀。MySQL事务通过undo/redo日志实现完整ACID,支持复杂操作与回滚,但性能较低。关键区别在于Redis无隔离性保证,错误不自动回滚,而MySQL提供强一致性和完善的错误处理机制。实际应用中,Redis适合简单原子操作,MySQL适合需要严格一致性的业务场景,两者可结合使用发挥各自优势。

m0_73889530的博客 959

使用LSTM实现自动调制识别(RML2018.01a)

目录一、LSTM的代码实现1.1 导入包1.2 数据读取及数据集划分1.3 数据预处理1.4 构建LSTM模型 本文基于RML2018.01a大型数据集,给出LSTM的信号识别的实现方式(附代码) RML2018.01a数据集信息如下: 模型 传送门 CNN/ResNet 使用CNN/ResNet实现自动调制识别(RML2018.01a) LSTM 使用LSTM实现自动调制识别(RML2018.01a)) 一、LSTM的代码实现 1.1 导入包 import numpy as np

QAQIknow的博客 6121

Redis事务以及redis事务与mysql事务的区别

Redis的事务提供了一种基本的原子操作机制,但它并不具备数据库事务那样的复杂特性。因此,在需要更复杂ACID事务特性的情况下,应该谨慎使用Redis事务,并考虑其他解决方案。

xzz的博客 1265

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Redis 事务,和MySQL相比 事物的区别

目录: redis事务 setnx 分布式锁解决超卖 redis事物 - redis事物介绍 redis事物是可以一次执行多个命令,本质是一组命令的集合。 一个事务中的所有命令都会序列化,按顺序串行化的执行而不会被其他命令插入 作用:一个队列中,一次性、顺序性、排他性的执行一系列命令 - multi 指令基本使用 下面指令演示了一个完整的事物过程,所有指令在exec前不执行...

H_sen's Blog 2836

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Redis的事务是什么样子的?Redis的事务和MySql的事务的区别在哪?watch命令的作用是什么?

有这样一种场景,客户端1开启了事务,并且设置了 key,但是,在执行事务之前,客户端2 修改了key,此时,按照常理来讲,key 应该是 222,但是,因为在客户端1中,只是将命令放到了队列中,并没有实际的去执行,只有在输入 exec 命令之后,才会执行,所以,最终的 key 的 value 是 111。从下图可以看到,在开启事务后,set 命令并没有生效,只是返回了一个 queued,这就说明,当前的命令,只是被放入了事务队列中,并没有生效,此时,如果通过另一个客户端获取的话是获取不到的。

Shine0115的博客 1013

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Redis之坑:Redis与MySQL中事务的区别

MySQL实现事务,是基于`UNDO/REDO日志`。 Redis实现事务,是基于`COMMANDS队列`。

洛丹伦的夏天 8504

redis mysql 事务区别_redis┃面试官问我redis事务和mysql事务的区别,我。。。。。...

​本文共:3889字 预计阅读时间:9分钟原文在我的微信公众号中1. 前言面试官:我看你简历上写了熟悉redis,看来工作中用的很多吧?我:是的,我们项目中经常用到redis(来,随便问,看我分分钟秒杀你)面试官:那你给我说说redis的事务和mysql的事务有什么区别吧我:额。。。事务还有区别????面试官:比如说redis的事务是不支持原子性和持久性的,包括他们的实现原理等方面也是有很大区别的...

weixin_42357331的博客 1332

redis mysql 事务区别_redis与mysql事务比较

mysql事务具有原子性,隔离性,一致性的特点。redis提供multi, exec,watch来支持事务:原子性,一致性:redis保证在multi,exec之间的语句作为一个整体执行,redis在exec后,是无法回滚的,会出现部分成功,部分失败情况。隔离性(mysql默认可重复读:事务中多次读取同一数据是一致的):redis的事务类似mysql的串行化隔离界别,执行期间不会乱入其他语句。re...

weixin_36053926的博客 433

Redis事务与MySQL事务的区别

事务命令 mysql: Begin:显式的开启一个事务 Commit:提交事务,将对数据库进行的所有的修改变成永久性的 Rollback:结束用户的事务,并撤销现在正在进行的未提交的修改 redis: Multi:标记事务的开始 Exec:执行事务的commands队列 Discard:结束事务,并清除commands队列 默认状态 mysql: mysql会默认开启一个事务,且缺省设置...

weixin_43658613的博客 2664

Redis事务与MySQL事务有什么区别?一文分清

Redis 与 MySQL 事务机制大比对——同样叫“事务”,能力差距却非常大Redis:队列执行 + 不支持回滚MySQL:严格ACID + 支持回滚保障本文拆解命令执行流程,带你完整理解 Redis 事务原理Redis事务 ≠ MySQL事务。多命令批处理原子队列干净执行WATCH控制并发一致性不支持失败回滚而 MySQL 事务,则提供完整 ACID 属性与可靠回滚机制,适用于关键业务数据。Redis事务用于加速简单写操作MySQL事务用于数据安全业务逻辑。

dividividiv的博客 638

Redis的事务和MySQL的事务区别?

Redis的事务的好处是,简单,轻量,不需要复杂的事务管理,之所以这么设计,是因为Redis天生就是一个缓存框架,他的目的就是为了性能。而且Redis的事务也没有隔离级别的走义,本身是单线程的,也没啥隔离的必要了。我们知道,Redis和MySQL都宣称自己支持事务的,但是他们的事务是不一样的。:同一事务内的查询结果一致(防止不可重复读,但是会出现幻读,MySOL默认)。MySQL的事务机制是遵循标准的 ACID 的,所谓ACID,就是。:只能看到已提交事务的数据(可以防止脏读,但是会出现不可重复读)。

weixin_51291483的博客 441

Redis的事务:相关命令 watch 与mysql事务的区别

Redis事务的概念: Redis 事务的本质是一组命令的集合。 事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。 总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。   Redis事务没有隔离级别的概念: 批量操作在发送 EXEC 命令前被放入队列缓存,并不会被实际执行,也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到。 Redis不保证原子

思维小刀 332

Redis 事务是什么?又和MySQL事务有什么区别?

Redis事务是一组按顺序执行的命令集合,执行过程中不会被其他命令干扰。与MySQL事务不同,Redis事务具有以下特点:1)保证命令连续独占执行但无隔离级别;2)不保证原子性,可能出现部分成功部分失败;3)具有排它性。常用命令包括MULTI(开始事务)、EXEC(执行事务)、DISCARD(取消事务)、WATCH(监控键)等。事务执行分为两种情况:EXEC前出现错误(类似编译异常,整个事务不执行)和EXEC后出现错误(类似运行异常,部分命令可能成功执行)。WATCH命令基于CAS乐观锁机制实现键值监控。

m0_70325779的博客 1131

Redis事务和Mysql事务的区别

Redis事务 默认状态未开启,执行步骤: multi 开启事务 exec 执行事务 discard 取消事务 特点: 单独的隔离操作,事务会按照顺序执行,不会被客户端的其它请求干扰 由于redis的事务只是把命令放到了队列里,并没有执行,而是等到最后一起执行,从而事务间就不会导致数据脏读、不可重复读、幻读的问题,所以也就没有隔离级别的概念 执行事务时,如果有语法错误,事务不会执行 不具备原子性,执行事务时,如果有命令执行失败,事务会继续执行,不会执行回滚操作,不会影响后续的操作 Mysql

Attitude_do_it的博客 1306
上一篇: mysql索引必须了解的几个重要问题
下一篇: php中self与static的区别
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值