首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
联易融
校招火热招聘中
官网直投
相关推荐
蓝桉f
04-25 08:54
沈阳建筑大学 建筑类
大家的实习怎么找的啊
实习岗位寥寥无几,搞了好多找工作的软件了,微信公众号也用上了,总共加起来的要实习的岗位都不超过十个,投了简历还都没有消息,这咋办啊
实习,投递多份简历没人回复怎么办
点赞
评论
收藏
转发
求个offer11
04-24 22:46
武汉理工大学 计算机类
字节
字节hr面一般多久oc或者挂掉啊,最后的希望了
牛客帮帮团来啦!有问必答
点赞
评论
收藏
转发
牛油果avocado
03-11 17:18
已编辑
门头沟学院 电子信息类
25届Java日常或者暑期
只做了一个黑马点评和苍穹外卖,想找中厂日常实习大伙有什么建议
点赞
评论
收藏
转发
给🐭🐭个实习机会吧
04-22 21:10
已编辑
西安交通大学 计算机类
许愿淘天OC!
刚面完hr面,万能的牛客,让🐭🐭过吧 更新:当晚oc了,这效率太高了吧,牛客真的很灵🙏
点赞
评论
收藏
转发
点赞
20
评论
分享
回复帖子
招聘动态
查看更多
滴滴
2025届秋招储备实习生招聘
联易融2024届营销管培生校园招聘
全站热榜
1
...
想来字节技术实习,看我这篇就够了!——保姆级面经大放送
1.9W
2
...
外卖员面试经验
1.8W
3
...
25届第一份实习怎么找?
1.7W
4
...
0实习经验上岸字节,分享一下过程经验
1.6W
5
...
【奖】来领牛币和静音鼠标啦~
1.5W
6
...
【0429快问快答】99%牛油的疑惑解答(更新至38个问题
1.4W
7
...
准备去参加自己的婚礼
1.2W
8
...
美团后端日常实习一二面(已oc)
9373
9
...
【💰有奖征集】非技术岗位笔面经邀你来分享!攒人品时间到!
8220
10
...
腾讯后台开发一面4.26
8162
正在热议
#
牛友的五一计划
#
13757次浏览
308人参与
#
如何看待offer收割机的行为
#
193431次浏览
2975人参与
#
牛客帮帮团来啦!有问必答
#
394941次浏览
7781人参与
#
晒一晒我的offer
#
2819178次浏览
49872人参与
#
无实习如何秋招上岸
#
172208次浏览
2713人参与
#
如何一边实习一边秋招
#
200889次浏览
3989人参与
#
春招别灰心,我们一人来一句鼓励
#
21035次浏览
304人参与
#
非技术岗薪资爆料
#
8077次浏览
152人参与
#
硬件人的春招flag
#
14516次浏览
199人参与
#
在国企工作的人,躺平了吗?
#
72604次浏览
878人参与
#
女生做医疗销售有前景吗
#
3837次浏览
48人参与
#
第一次面试
#
16750次浏览
250人参与
#
来聊聊机械薪资天花板是哪家
#
22379次浏览
178人参与
#
机械人,你的秋招第一份简历被谁挂了
#
26921次浏览
491人参与
#
你更愿意参加线上面试还是线下面试?
#
6854次浏览
94人参与
#
华为求职进展汇总
#
441225次浏览
4432人参与
#
机械制造2024笔面经
#
277825次浏览
4659人参与
#
没有实习经历,还有机会进大厂吗
#
257519次浏览
4841人参与
#
通信硬件薪资爆料
#
147592次浏览
1117人参与
#
简历中的项目经历要怎么写
#
380306次浏览
6390人参与
牛客网
牛客企业服务