回顾:数据库操作和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

相关内容

热门资讯

原创 特... 截至2025年6月,美国境内1100万至1500万非法移民(主体仍为拉美裔,墨西哥占绝对多数,但亚洲...
IDP股价暴跌背后: 多国签证... 长期以来,美国、英国、澳大利亚和加拿大接收了全球大部分海外留学生。但近来,随着多国签证政策收紧以及不...
突发!曼联官宣10人下岗,三届... 足坛一声惊雷!就在球迷们还在回味各大联赛的收官大戏时,英超豪门曼联官方扔出重磅炸弹,一口气宣布10名...
中国首笔越南边贸扩围新政策结算... 中新网南宁6月9日电(蒙振乾 郭宁)广西东兴市某进出口公司一批出口越南广宁省货物的人民币货款,日前在...
健全新就业形态人员社保制度,如... 新京报讯(记者叶红梅)由中共中央办公厅、国务院办公厅印发的《关于进一步保障和改善民生 着力解决群众急...
男子花17万元找代孕生子未果,... 因婚后20多年未生育儿子,广西男子陆某竟与一女子达成“代孕协议”。在他为此花费17万余元后,对方不再...
合肥一名60后大叔参加高考,保... 6月9日,是高考第三天,合肥一名60后大叔也走进包河区西藏路合肥一中考点考试,上午他考完化学以后,回...
泰达股份股价微涨0.76% 子... 截至2025年6月9日收盘,泰达股份报4.00元,较前一交易日上涨0.03元,涨幅0.76%。当日成...
突发:两架俄战机被击中 据美联社消息,乌克兰总参谋部周一声称,特种作战部队袭击了位于俄罗斯下诺夫哥罗德州萨瓦斯雷卡机场的两架...
一星级至五星级!广东法律援助志... 为解决法律援助志愿服务组织分散、管理标准不一、保障激励不足等问题,6月9日,广东省委社会工作部与省司...