首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
Lyh0
2019-09-07 17:11
已编辑
厦门大学 Java
关注
已关注
取消关注
关于数据库和缓存一致性问题
关于数据库和缓存一致性问题,网上的说法大都是先更新数据库,再删除缓存。可是如果是 :
1.线程A更新数据库
2.线程B查询从缓存中得到旧数据
3.线程A让缓存失效。
这样线程B不就是得到脏数据吗??请问有大佬帮忙解答一下吗?
#MySQL#
提示
全部评论
推荐
最新
楼层
统行
西安石油大学 Java
先更新DB,在删除缓存,损失点一致性,虽然可能第一时间读不到最新的,但是逻辑没问题
点赞
回复
分享
发布于 2019-09-07 15:01
练绝活
阿里巴巴_大淘宝技术_研发工程师
https://coolshell.cn/articles/17416.html
点赞
回复
分享
发布于 2019-09-07 15:02
安静的小白
华东理工大学 Java
老哥,我的理解:你的第3步错了,应该是让缓存失效。你说的那种情况是有可能发生的,A更新成功,B过来读缓存成功,获取老数据,之后A再让缓存失效;从此以后,后面的查询读的都是新数据了,因为缓存已经失效了,需要读数据库,然后把新的值设置到缓存里。。。所以你说的这种情况,只会影响那一次查询,只有一次,一次的概率很低很低,相对于先删缓存,在更新数据库造成的脏数据好太多了。 我的理解:1.先更新数据库,再删缓存最大的问题在于更新成功,没办法确保删缓存成功,因为没办法采用单机事务去保证这两个操作的原子性,所以可以采用一种不断重试的ACK机制,你可以自己写个重试机制,也可以使用市面上经常用的mq来保证,因为mq为了保证容错性,也实现了ack机制,步骤是可以用一个工具将mysql的binlog日志抓取出来,然后采用mq去确保删缓存一定会成功; 2.先更新数据库,再删缓存还有个弊端是:(1)A读数据,缓存失效,需要读数据库,(2)B更新数据库,更新成功,(3)B是缓存失效,(4)A将读出来的数据设置到缓存里,此种情况是会产生数据不一致的,但是这是极限状态更新数据库需要锁表,读数据库不需要,写的时间大于读的时间,所以此种情况很难发生,基于以上讨论,所以先更新数据库,再删缓存,相对于其他方法是比较理想的(或许未来会有更好的方法,但是目前这种方法所带来的的影响相对于其他的是较小的) 以上仅供参考,个人见解
点赞
回复
分享
发布于 2019-09-07 16:14
yzltrs
江西财经大学 Java
应该是先删缓存再更新据库吧。。。我认为流程是:先把缓存的数据删了,然后更新数据库,最后重新注入缓存
点赞
回复
分享
发布于 2019-09-07 14:56
小度小度
南京大学 Java
感觉和事务的隔离性有关,四种隔离级别可以看下,如果隔离级别是脏读,那就有可能读到脏数据
点赞
回复
分享
发布于 2019-09-07 15:01
C.A.Y.P
五邑大学 Java
牺牲点一致性
点赞
回复
分享
发布于 2019-09-07 15:17
Lyh0
楼主
厦门大学 Java
如果是针对秒杀这种一致性要求很高的场景呢?我看慕课上面就是直接用redis单线程访问控制,然后用消息队列来实现最终一致性。可是这样做性能应该很低下吧?
点赞
回复
分享
发布于 2019-09-07 15:20
哈哈(ಡωಡ)hiahiahiamn
门头沟学院 Java
弄个操作顺序的队列
点赞
回复
分享
发布于 2019-09-07 16:48
这瓜保熟吗
华为_软件工程师
只有极高并发才可能出现楼主说的问题,上队列串行化可以解决
点赞
回复
分享
发布于 2019-09-08 09:31
还没有回复哦~
相关推荐
昨天 10:48
门头沟学院 Java
秋招0offer,感觉心气被磨没了
忙碌了两三个月,收获的只有几个烂意向,全部拒了,到头来还是一场空,怀疑自己读研的意义现在的心态有点像三和大神,感觉事情都是没有意义的,提不起劲,刚入学时意气风发的少年去哪了
点赞
评论
收藏
分享
11-19 16:15
已编辑
中南大学 Java
人生充满了遗憾
在深圳实习完忙着秋招的时候有朋友叫我一起去外面玩,说以后可能很久都没机会来深圳了,不去玩会留下遗憾,我还是三方五次拒绝了,我当时的想法是:人生充满了遗憾,多一个少一个对我来说根本无所谓,我的评价是也就这b样了。秋招结束,春招启动!
求offer的社畜很想吃卤蛋:
篮子对快手是不满意吗
牛客创作赏金赛
25届秋招总结
点赞
评论
收藏
分享
11-01 19:50
安徽农业大学 Java
秋招0offer
鼠鼠投了400份简历,Java面试就两个,求大佬指点下简历。救救鼠鼠😭
利澳Kshi:
简历比我强 ,纯行情不好
点赞
评论
收藏
分享
10-16 11:10
西安电子科技大学 测试工程师
人生第一次拒绝offer
其实手上也没有别的…😭大胆一次吧😡😡😡
刘小帅_:
什么东西,还签满了就不签了
点赞
评论
收藏
分享
11-22 17:55
河南工学院 光传输工程师
大公司和小公司真的不一样
小公司是真的留不住人,朋友提离职,半个月流程走完,直接踢出企业群,期间福利全部取消,第二个月结工资,扣了二百,联系财务问为啥,说是上个月离职期间有两天没发工作汇报,扣了两百.…离职的时候还被领导喊过去说你想清楚了,别逞一时之快,公司有规定离职黑名单以后回不来的。大公司就不一样了,另一个朋友提离职一个月交接期,领导说还有15天带薪年假,一起休了期间过节费,礼品,一分不少,一样不少,离开前部门聚餐,祝前途似锦。
想六点下班番石榴在线蹲牛友:
转人工
点赞
评论
收藏
分享
点赞成功,聊一聊 >
点赞
20
评论
分享
回复帖子
提到的真题
返回内容
招聘动态
查看更多
字节跳动
2025校园招聘
杉川机器人
2025校园招聘
快手Star
2025届招聘
快手
销售类投递专区
库洛游戏
全站热榜
1
...
双非本科四年的总结
1.6W
2
...
sagima的阎良出差日记
1.3W
3
...
给正在秋招中枯燥的大家找个乐子听听吧,不被理解真的心寒
1.1W
4
...
简历这样写真的很难挂
9302
5
...
请大家警惕“总包”骗局!
5931
6
...
大哥爆发了?
3916
7
...
秋招可以暂告一个段落啦
3704
8
...
忙完了工作,又要毕业论文……
3528
9
...
领导让我以后别叫他哥
3368
10
...
有奖征集|我想知道,你在秋招中最难忘的一个瞬间
3185
正在热议
#
25届秋招总结
#
271588次浏览
2300人参与
#
如果实习可以转正,你会不会放弃秋招
#
205197次浏览
2793人参与
#
北方华创开奖
#
24057次浏览
261人参与
#
地方国企笔面经互助
#
3035次浏览
7人参与
#
学历or实习经历,哪个更重要
#
45411次浏览
345人参与
#
选完offer后,你后悔学本专业吗
#
15136次浏览
112人参与
#
0offer是寒冬太冷还是我太菜
#
890406次浏览
7948人参与
#
你觉得专业和学校哪个对薪资影响最大
#
28600次浏览
214人参与
#
查收我的offer竞争力报告
#
20543次浏览
259人参与
#
你最想要的公司福利是?
#
42693次浏览
153人参与
#
软开人,秋招你打算投哪些公司呢
#
40768次浏览
529人参与
#
如何一边实习一边秋招
#
988216次浏览
12614人参与
#
应届生被毁约被毁意向了怎么办
#
28621次浏览
244人参与
#
一觉醒来,我觉醒了超级打工人系统
#
3469次浏览
36人参与
#
当你面对裁员会如何?
#
26310次浏览
153人参与
#
来聊聊机械薪资天花板是哪家
#
66830次浏览
452人参与
#
没有实习经历,还有机会进大厂吗
#
807912次浏览
13863人参与
#
面试体验感最好的是哪家?
#
83930次浏览
820人参与
#
机械应届生薪资要多少才合适?
#
12601次浏览
61人参与
#
如何写一份好简历
#
606178次浏览
8533人参与
#
如果公司降薪,你会跳槽吗?
#
24965次浏览
237人参与
牛客网
牛客企业服务