在项目中有个需求,需要保证MySQL数据库和Redis缓存数据的一致性。

一般增删改都是先操作MySQL数据库,成功之后再操作Redis,但这里有个问题,如果MySQL操作成功了,但Redis突然出现异常,操作失败,如何回滚MySQL操作。

使用注解@Transactional只会回滚MySQL异常的情况,Redis本身也不具备回滚功能,在MySQL操作成功的情况下,@Transactional注解会认为方法并没有异常,会继续执行而不回滚,这样就导致了MySQL和Redis不一致的情况。

为了避免这种情况,每次操作Redis之后,都会判断Redis有没有操作成功,操作失败则进行手动回滚,加一行代码:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();  配合@Transactional注解即可解决问题。

特此记录。

MySQL操作成功之后Redis操作失败的回滚问题相关推荐

  1. Java-JDBC【之】事务介绍、事务特性、操作事务(事务提交、异常回滚)

    Java-JDBC[之]事务介绍.事务特性.操作事务(事务提交.异常回滚) 1.数据库事务 1.1.介绍 1.2.事务特性(ACID) 1.3.隔离性(Isolation),带来的问题与处理 1.4. ...

  2. Redis事务,ACID性质,但是Redis不支持事务回滚

    ACID性质 1.原子性 事物具有原子性指的是,数据库将事务中的多个操作当做一个整体来执行,服务器要么执行事务中的所有操作,要么就一个操作也不执行. 对于Redis的事务功能来说,事务队列中的命令要么 ...

  3. python redis 操作_Python 使用 Redis 操作

    #set(name, value, ex=None, px=None, nx=False, xx=False)#r.set(name="k1",value="v1&quo ...

  4. git 回滚 add 操作_炫技!git 优雅回滚一次错误的合并操作!

    点击蓝色小字关注! 关注一下你就不会有bug!合并操作 相对于常规的 commit,当使用 git merge 合并两个分支的时候,你会得到一个新的 merge commit. 当我们 git sho ...

  5. MySQL数据库的事务开启,提交和回滚

    事务(transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位. 基于事务的原子性.一致性.隔离性和持续性特征,可以将相关的数据操作定义到一个事务 ...

  6. redis事务不具有回滚机制,那么它是如何进行事务控制的

    redis事务 任何数据库都要有一套自己的事务控制机制,redis事务是一次可以执行多个命令,它的本质是一组命令的集合.一个事务中所有的命令都会被序列化,在事务执行的过程中会按照顺序执行队列中的命令. ...

  7. mysql重做日志_详解MySQL 重做日志(redo log)与回滚日志(undo logo)

    前言: 前面文章讲述了 MySQL 系统中常见的几种日志,其实还有事务相关日志 redo log 和 undo log 没有介绍.相对于其他几种日志而言, redo log 和 undo log 是更 ...

  8. php redis事务回滚,【Redis】Redis事务详解,Redis事务不支持回滚吗?

    1.redis事物参考:https://baijiahao.baidu.com/s?id=1613631210471699441&wfr=spider&for=pc (php操作red ...

  9. php封装redis类,php封装redis操作类

    Redis系列-key相关主要操作函数_数学_自然科学_专业资料.这篇 blog 主要总结下,redis 中跟 key 相关的常用函数 1)keys 语法:keys pattern 解释:查找所有匹配 ...

最新文章

  1. 扒皮下京东首页楼层图标的动画效果实现方式
  2. 关于使用python的open函数时报No Such File or DIr的错误
  3. faster rcnn windows 下c++版本
  4. live555 源码分析:RTSPServer 组件结构
  5. 5分钟看懂,未来1年web前端新趋势,都在这了!!!
  6. Vue绑定style的使用方式(令组件复用)
  7. 使用DirectX播放音频数据流
  8. 智慧酒店系统开发给现代酒店运营注入创新活力
  9. 计算机技术与软件考试高级难么,计算机技术与软件专业技术资格考试高级哪个好考...
  10. 3、TM4之GPIO的输入输出
  11. TSC条码打印机 条形码ActiveXbarcode()方法参数详解
  12. 【无标题】人工智能的定义
  13. 【智能制造】智能制造与智能工厂的主要特征
  14. 13个Python小游戏,可以上班摸鱼玩了一天
  15. MySQL MGR 安装
  16. Redis——狂聊教程笔记
  17. HDLC协议及PPP协议
  18. 微信链接防拦截跳转系统 微信域名防屏蔽技术
  19. 微信有没有免费提现服务器,微信有没有免费提现的方法 教你三个微信提现的小技巧...
  20. 海康威视设备SDK调用,是否支持IP通道的思考

热门文章

  1. Java单点登录技术选型与对比 kisso, sa-token
  2. figma查看原始图片大小
  3. COCI 2016/2017 Round #3 题解
  4. 【Python数据分析学习实例】动态新闻标题热点挖掘
  5. 小偷抢劫房屋 算法题
  6. 8年前的Linux内核漏洞被发现
  7. Epson Me xx 打印机清零图解
  8. Java文件是如何编译成Dex文件的?如何执行Dex文件?
  9. IPv4 客户与IPv6服务器_UNP
  10. 微软骚操作恶心Win10用户,上网得先看广告