关注
老哥,我的理解:你的第3步错了,应该是让缓存失效。你说的那种情况是有可能发生的,A更新成功,B过来读缓存成功,获取老数据,之后A再让缓存失效;从此以后,后面的查询读的都是新数据了,因为缓存已经失效了,需要读数据库,然后把新的值设置到缓存里。。。所以你说的这种情况,只会影响那一次查询,只有一次,一次的概率很低很低,相对于先删缓存,在更新数据库造成的脏数据好太多了。 我的理解:1.先更新数据库,再删缓存最大的问题在于更新成功,没办法确保删缓存成功,因为没办法采用单机事务去保证这两个操作的原子性,所以可以采用一种不断重试的ACK机制,你可以自己写个重试机制,也可以使用市面上经常用的mq来保证,因为mq为了保证容错性,也实现了ack机制,步骤是可以用一个工具将mysql的binlog日志抓取出来,然后采用mq去确保删缓存一定会成功; 2.先更新数据库,再删缓存还有个弊端是:(1)A读数据,缓存失效,需要读数据库,(2)B更新数据库,更新成功,(3)B是缓存失效,(4)A将读出来的数据设置到缓存里,此种情况是会产生数据不一致的,但是这是极限状态更新数据库需要锁表,读数据库不需要,写的时间大于读的时间,所以此种情况很难发生,基于以上讨论,所以先更新数据库,再删缓存,相对于其他方法是比较理想的(或许未来会有更好的方法,但是目前这种方法所带来的的影响相对于其他的是较小的) 以上仅供参考,个人见解
查看原帖
点赞 2
相关推荐
查看36道真题和解析
点赞 评论 收藏
转发
牛客热帖
正在热议
# 和牛牛一起刷题打卡 #
4428次浏览 420人参与
# 机械制造薪资爆料 #
340763次浏览 4042人参与
# 牛客帮帮团来啦!有问必答 #
981469次浏览 15221人参与
# 通信硬件薪资爆料 #
241859次浏览 2281人参与
# 腾讯工作体验 #
146294次浏览 1405人参与
# 如何写一份好简历 #
300577次浏览 4324人参与
# 实习必须要去大厂吗? #
17993次浏览 263人参与
# 你的简历改到第几版了 #
323101次浏览 4854人参与
# 晒一晒我的offer #
3649808次浏览 56913人参与
# 2022毕业生求职现身说法 #
20368次浏览 310人参与
# 产品人专业大盘点 #
15073次浏览 120人参与
# 毕业租房也有小确幸 #
31786次浏览 1806人参与
# 浅聊一下我实习的辛苦费 #
93263次浏览 916人参与
# 视觉/交互/设计岗位评价 #
3356次浏览 59人参与
# 为什么国企只招应届生 #
55999次浏览 407人参与
# 你觉得机械有必要实习吗 #
10073次浏览 130人参与
# 为什么那么多公司毁约 #
54671次浏览 482人参与
# 在国企工作的人,躺平了吗? #
105370次浏览 1335人参与
# 来选选带哪个offer回家过年 #
185188次浏览 1771人参与
# 找工作时遇到的神仙HR #
195701次浏览 1837人参与