首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
秋招专场
校招火热招聘中
官网直投
相关推荐
火鸡味锅巴肉蛋蟹黄堡
05-23 03:31
华中科技大学 机械类
一场华为机考击碎了机械转嵌软的梦
【🤡前情提要与本人情况】锅巴本人本科西安某9硕武汉某9(别问我为啥读研滚去武汉了,这是另一部复试失败又调剂的血泪史),本科读研都是机械专业,算是根正苗红的机械人我是2018年入学,彼时正是爆出一汽大众不招收同济大学毕业生的时候,知乎也是一片劝退潮没眼看的时候本科做过机创工训,一开始是希望借此保研,但后来发现打比赛本身的乐趣,以及团队,都拿了国家奖(一个国一一个国铜),其他大大小小的比赛专利大创也有两三个,但是在队内一直都做的是机械结构和加工(建模加工G代码还挺熟练),看到别的机械专业的同学学习很多嵌入式的内容最后做机器人控制,在全民转码的大环境下,也想过学习一些嵌入式的知识而后2...
投递华为等公司10个岗位 >
机械专业只有考研才有出路吗
如果重来一次你还会读研吗
点赞
评论
收藏
转发
可否毕业前给个offer
04-25 10:40
广州软件学院 计算机类
你们觉得这是多少钱应该干的活?一整个震惊😅
点赞
评论
收藏
转发
被升职的小饼干很高大
05-25 17:07
已编辑
山东师范大学 计算机类
在北京每个月花2k租房是一种什么体验?
大家好,我是小布丁。 时间过的真快,我已经北漂一年了,搬家两次,找房三次,多少有点小经验,写篇文章来记录,希望能帮到小伙伴们~ 先给大家介绍一下我的租房经历: 北京的第一个房子: 在永旺家园租到了北京的第一个房子,是一个二十平左右的小次卧,房子很新,也特别干净,一个月2k,离地铁站特别近,交通方便,小区里就有接饮用水的地方,不用每个月都买矿泉水。唯一的缺点就是只租三个月,后来房东嫌麻烦直接整租了,没办法,找新房子吧,搬家! 北京的第二个房子: 第二个房子租在了龙腾苑,这边的房子比较旧,都是一些老小区,一个月也是2k,没有电梯,我租在五楼搬家真的要半条命,平时上上下下也挺累的。...
租房前辈的忠告
毕业租房也有小确幸
点赞
评论
收藏
转发
点赞
20
评论
分享
回复帖子
提到的真题
返回内容
招聘动态
查看更多
博士生招聘专场开启啦
全站热榜
1
...
毕业第一课之租房攻略
9627
2
...
【奖】这个夏天🍉,和牛牛一起打卡刷题~
8707
3
...
25暑期实习的心态变化 & 拥抱变化
7788
4
...
美团后端日常实习面经
7689
5
...
拼多多一面
6665
6
...
【收集向】延毕了,影响工作吗?
4359
7
...
不要再外卖点评了
4079
8
...
拼多多笔试 0526 24届算法
4011
9
...
27届JAVA后端
3872
10
...
用友技术笔试-友新星实习项目-Java-01卷
3746
正在热议
#
和牛牛一起刷题打卡
#
4379次浏览
418人参与
#
机械制造薪资爆料
#
340654次浏览
4042人参与
#
牛客帮帮团来啦!有问必答
#
980697次浏览
15208人参与
#
通信硬件薪资爆料
#
241771次浏览
2280人参与
#
腾讯工作体验
#
146224次浏览
1405人参与
#
如何写一份好简历
#
300477次浏览
4323人参与
#
你的简历改到第几版了
#
323029次浏览
4852人参与
#
晒一晒我的offer
#
3649027次浏览
56907人参与
#
2022毕业生求职现身说法
#
20334次浏览
310人参与
#
产品人专业大盘点
#
15061次浏览
120人参与
#
毕业租房也有小确幸
#
31684次浏览
1789人参与
#
浅聊一下我实习的辛苦费
#
93210次浏览
916人参与
#
视觉/交互/设计岗位评价
#
3354次浏览
59人参与
#
实习必须要去大厂吗?
#
17968次浏览
263人参与
#
为什么国企只招应届生
#
55974次浏览
407人参与
#
你觉得机械有必要实习吗
#
10060次浏览
130人参与
#
在国企工作的人,躺平了吗?
#
105324次浏览
1335人参与
#
为什么那么多公司毁约
#
54637次浏览
482人参与
#
许愿池
#
86880次浏览
1630人参与
#
找工作时遇到的神仙HR
#
195557次浏览
1835人参与
牛客网
牛客企业服务