首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
这瓜保熟吗
Java
只有极高并发才可能出现楼主说的问题,上队列串行化可以解决
点赞
送花
回复
分享
发布于 2019-09-08 09:31
秋招专场
校招火热招聘中
官网直投
相关推荐
摸鱼top_like
06-05 16:55
TP-LINK_运营管理_HR
TP-Link—提前批内推
节奏比较快,24届的补录刚结束不久,提前批就开了,建议都投递一下,不影响秋招,相当于多一次机会,来刷刷面经也可以的,一定要早点投递,大家记得分清楚普联和联洲,公司官网和投递都是分开的,这里是联洲国际的内推一如既往的内推(),可以点击链接 或者投递的时候填写内推码内推投递链接:http://career.tplinkglobal.com/recommended/jobs?shareId=d2d939f0-fac0-4269-a87c-947fb5281d29&shareSource=2 如果内推链接失效了,可以扫码内推投递,内推投递可以优先筛选内推码:ESVGRA内推码:ESVGRA内...
投递TP-LINK等公司10个岗位 >
点赞
评论
收藏
分享
Frankd35
06-03 13:33
门头沟学院 计算机类
momenta 实习 C++ 一面
个人感觉 M 家问的还是比较浅的,很常见的 C++ 八股,标黄的部分是我没答上来或者回答的比较模糊的,面试官反馈基础还可以面试完两个小时 hr 就约 2 面了,不过个人原因 2 面往后拖了,还没面面试体验还不错,虽然面试官没开摄像头,但是每个问题会和你交流反馈,帮你纠正一下不对的地方,不像有的面试就是他问你答完全没有交流
查看3道真题和解析
我的实习求职记录
点赞
评论
收藏
分享
不想上班秋招侠就要上岸了
05-08 19:12
华中师范大学 计算机类
暑期没oc怎么办
现在的部门暑期没有hc了,再投暑期是不是晚了
点赞
评论
收藏
分享
qrna
04-15 11:06
腾讯_csig_机器学习算法研究(实习员工)
轮到我写感谢信了
经过多平台投票调研,以及和多位朋友深入讨论,最终决定放弃百度的offer,全身心拥抱鹅厂
点赞
评论
收藏
分享
要双休的长颈鹿很不想上网课
06-06 21:30
同济大学 计算机类
电话漏接了,回拨说呼叫的号码无法使用此服务
会是hr电话吗,害怕是最近面的网易
点赞
评论
收藏
分享
点赞
20
评论
分享
回复帖子
提到的真题
返回内容
招聘动态
查看更多
国泰君安“数字化人才专场”
2025届校园招聘
博士生招聘专场开启啦
全站热榜
1
...
24届985计算机废物春招感想(央国企、银行)
1.8W
2
...
问一下大家的实习薪资是多少?
8818
3
...
秋招在即,求刷题搭子!!
7152
4
...
有个好导师真幸福
5445
5
...
美团 实习
5106
6
...
颇有感慨
4474
7
...
导师不放实习,实习偷跑一个月经历
3817
8
...
【💰有奖征集】软件开发笔面经邀你来分享!🙋♂️
3217
9
...
许愿今天收到华子offer
3133
10
...
华为 泡死了
2560
正在热议
#
和牛牛一起刷题打卡
#
29236次浏览
2157人参与
#
你的秋招进展怎么样了
#
575645次浏览
14107人参与
#
不去互联网可以去金融科技
#
35694次浏览
416人参与
#
牛客帮帮团来啦!有问必答
#
1221342次浏览
17761人参与
#
你最多能接受一周加班几个小时
#
4478次浏览
49人参与
#
我在牛爱网找对象
#
59995次浏览
461人参与
#
OPPO开奖
#
39766次浏览
559人参与
#
你觉得通信/硬件有必要实习吗?
#
27738次浏览
468人参与
#
软件开发笔面经
#
9080次浏览
276人参与
#
24届软开秋招面试经验大赏
#
1198399次浏览
18332人参与
#
公司情报交流地
#
13685次浏览
82人参与
#
0offer是寒冬太冷还是我太菜
#
463137次浏览
5175人参与
#
听劝,我这个简历该怎么改?
#
64914次浏览
652人参与
#
产运销实习日记
#
3980次浏览
124人参与
#
职场上哪些事情令人讨厌
#
3184次浏览
24人参与
#
如何拒绝/反向PUA
#
22121次浏览
193人参与
#
京东方求职进展汇总
#
7939次浏览
73人参与
#
机械只有转码才有出路吗?
#
6093次浏览
133人参与
#
研究所VS国企,该如何选
#
50194次浏览
570人参与
#
在国企工作的人,躺平了吗?
#
118272次浏览
1666人参与
#
晒晒我司的端午福利
#
3396次浏览
60人参与
#
0offer互助地
#
63405次浏览
681人参与
牛客网
牛客企业服务