关注
老哥,我的理解:你的第3步错了,应该是让缓存失效。你说的那种情况是有可能发生的,A更新成功,B过来读缓存成功,获取老数据,之后A再让缓存失效;从此以后,后面的查询读的都是新数据了,因为缓存已经失效了,需要读数据库,然后把新的值设置到缓存里。。。所以你说的这种情况,只会影响那一次查询,只有一次,一次的概率很低很低,相对于先删缓存,在更新数据库造成的脏数据好太多了。 我的理解:1.先更新数据库,再删缓存最大的问题在于更新成功,没办法确保删缓存成功,因为没办法采用单机事务去保证这两个操作的原子性,所以可以采用一种不断重试的ACK机制,你可以自己写个重试机制,也可以使用市面上经常用的mq来保证,因为mq为了保证容错性,也实现了ack机制,步骤是可以用一个工具将mysql的binlog日志抓取出来,然后采用mq去确保删缓存一定会成功; 2.先更新数据库,再删缓存还有个弊端是:(1)A读数据,缓存失效,需要读数据库,(2)B更新数据库,更新成功,(3)B是缓存失效,(4)A将读出来的数据设置到缓存里,此种情况是会产生数据不一致的,但是这是极限状态更新数据库需要锁表,读数据库不需要,写的时间大于读的时间,所以此种情况很难发生,基于以上讨论,所以先更新数据库,再删缓存,相对于其他方法是比较理想的(或许未来会有更好的方法,但是目前这种方法所带来的的影响相对于其他的是较小的) 以上仅供参考,个人见解
查看原帖
点赞 2
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
05-11 00:47
湖北经济学院 Java 点赞 评论 收藏
分享

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 聊聊这家公司值得去吗 #
230875次浏览 2169人参与
# 职场人,说说你的烦心事 #
8314次浏览 69人参与
# 你认为哪个岗位找工作最卷 #
9878次浏览 34人参与
# 职场上哪些事情令人讨厌 #
16544次浏览 82人参与
# 一人一个landing小技巧 #
78235次浏览 1116人参与
# kpi面有什么特征 #
30556次浏览 177人参与
# 秋招最大的收获是什么? #
33793次浏览 296人参与
# 大家每天通勤多久? #
41886次浏览 329人参与
# 职场吐槽大会 #
204933次浏览 1633人参与
# 职场破防瞬间 #
234805次浏览 2125人参与
# 小红书求职进展汇总 #
56018次浏览 483人参与
# 为了找工作你投递了多少公司? #
8536次浏览 111人参与
# 找工作前vs找工作后的心路变化 #
9551次浏览 102人参与
# tplink提前批进度交流 #
162588次浏览 1377人参与
# 通信硬件牛牛的实习日记 #
7089次浏览 65人参与
# 总结:哪家公司面试体验感最好 #
47516次浏览 336人参与
# 机械制造岗投递时间线 #
22663次浏览 345人参与
# 硬件人你反向读研了吗 #
41716次浏览 630人参与
# 许愿池 #
283025次浏览 2868人参与
# 担心入职之后被发现很菜怎么办 #
126215次浏览 753人参与