回顾:数据库操作和redis缓存中的事务回滚问题
创始人
2025-06-01 09:16:14
0

实际的开发场景:在一个需要根据id批量删除数据库中的数据,同时也要redis缓存中的数据。那么如何保证数据库操作与Redis缓存操作的一致性,在CRUD出错时,保证回滚。

问题:

1、数据库开启事务,即可在操作失误时,回滚之前的已经做过的操作,保证操作原子性。

2、Redis的事务并不支持回滚功能,Redis命令在事务处理期间发生错误,原先的操作并不会回滚

3、我们都知道,需要先操作数据库再操作缓存,这样大概率会避免并发和很多错误问题。但是MySQL操作成功,而Redis异常,此时缓存数据不一致,如何回滚Mysql操作又是一个问题。

解决方案:

1、在Service方法上使用spring的@Transactional注解回滚MySQL异常

注:@Transactional只会回滚MySQL的异常,其后发生的Redis异常并不会让其回滚数据库。Redis也不会回滚(这个和Redis采用的设计策略有关:不对回滚支持,保证操作的简单快速)

对Redis操作进行解耦,并且进行判断操作有无成功,如果出错,抛出unchecked异常(比如runtimeException)

这样:Redis出错,MySQL回滚的问题。配合@Transactional注解就解决了

而问题2 就需要根据自身的情况,对Redis中已经产生的数据进行删除即可。

reids解耦

https://blog.csdn.net/w1014074794/article/details/106071104

事务失效场景

https://blog.csdn.net/weixin_54401017/article/details/129598621

相关内容

热门资讯

嘉兴男子与妻争吵,突然将行李箱... 近日,浙江嘉兴一对夫妻因琐事发生争吵,丈夫突然将装满衣物的行李箱从6楼扔到楼下,引发关注。11月22...
三地107家律所齐聚丰台,京津... 11月22日,京津冀律师驿站举办“党建业务深度融合 促进行业规范发展”主题活动,发布“百千万行动计划...
家装预付资金安全困局如何破解,... 家装预付资金安全困局如何破解 专家提出:建立“先验收后付款”装修资金存管制度 预交数万元甚至数十万元...
工行安康解放路支行积极开展《反... 为深入贯彻落实《国家金融监督管理总局安康监管分局办公室关于开展<反有组织犯罪法>宣传活动的通知》要求...
重庆公布育儿补贴制度实施方案 原标题:每孩每年3600元 重庆公布育儿补贴制度实施方案 11月21日,记者了解到,市卫生健康委、市...
十五运会组委会在深总结本届赛事... 深圳新闻网2025年11月22日讯(深圳报业集团记者 林炜航)11月21日,十五运会组委会在深圳市民...
中国军视网:日本妄言击沉福建舰... 本文转自【中国军视网】; 日本首相高市早苗发表涉台错误言论,公然挑战一个中国原则,甚至还有日本无知政...
重磅!东莞长安50万㎡产城发布... 在当下竞争激烈的市场环境中,中小企业如何突破成本压力,找到一片既能扎根成长又能眺望未来的理想栖息地?...
毕马威:政策、资本等多维着力 ... 由毕马威联合长三角G60科创走廊创新研究中心主办的“长三角高端装备新质领袖榜单发布仪式”于11月21...