首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
滴滴
校招火热招聘中
官网直投
相关推荐
kevinrec
05-11 06:46
上海交通大学 电子信息类
简历拒麻,求实习建议
bg211本华五硕硕士在学校dl算法,实验室方向偏slam有论文(不是top),有大厂实习经历(不是算法岗位)暑期实习选择什么样的岗位合适一些,互联网或者新能源哪个可能性大一些
实习,投递多份简历没人回复怎么办
没有实习经历,还有机会进大厂吗
点赞
评论
收藏
转发
CSDN博主极客李华
05-08 18:29
门头沟学院 计算机类
苦苦泡池子,唉
点赞
评论
收藏
转发
兔狲不吃草
04-18 20:00
东北大学 电子信息类
25届已经回暖了,太暖了。
点赞
评论
收藏
转发
Machine77
03-28 20:10
门头沟学院 计算机类
你舔的 hr,也许在舔别人
把学校改成浙大,好好好
点赞
评论
收藏
转发
戈薇薇
05-09 02:35
哔哩哔哩_软件开发工程师
哔哩哔哩!B站到了,请还未上车的校招同学抓紧春招末班车啦!
🚀🚀🚀这里是哔哩哔哩,上海二次元浓度最高的公司之一,欢迎各位大佬们投递!本人是工作一坤年(两年半)的社会人,刚入职B站不久的软件开发工程师,有任何疑问尽管招呼过来!🚀🚀🚀😽😽😽o(=•ェ•=)m 然后说说体验,公司,进B站最让我惊讶的是,可以带宠物上班!可以带宠物上班!可以带宠物上班!(震惊的事情说三遍hh)见过两只大肥狗∪・ω・∪,人高狗大的,我害怕了没敢去撸。但是每天总能看到一只大肥猫晃悠撸了个爽!喜欢宠物(但是懒得自己养)的有福了。💞💞💞上班时间弹性打卡,官方时间是早上十点到晚上七点,早来早走,晚来晚走哈。八点半可领盒饭,九点半可免费打车。每天全勤有15元餐补,转...
点赞
评论
收藏
转发
点赞
20
评论
分享
回复帖子
招聘动态
查看更多
滴滴
2025届秋招储备实习生招聘
全站热榜
1
...
携程oc了
1.5W
2
...
兄弟们之间就别卷了吧,选自己喜欢的offer得了
1.1W
3
...
美团-Java后端-平台技术部-一面凉经(复活赛)
9962
4
...
【话术建议】求职者和企业的互骗话术?
6044
5
...
快手二面g
3942
6
...
字节抖音电商后端日常实习一二三面已oc
3870
7
...
滴滴秋储后端(秒挂)
3525
8
...
【进面核心】如何紧盯个人简历与企业需求的契合度
3362
9
...
31天勇闯盲审(附盲审经验
3170
10
...
现在腾讯的暑期还招人么
2899
正在热议
#
牛客帮帮团来啦!有问必答
#
699373次浏览
11431人参与
#
许愿池
#
76745次浏览
1538人参与
#
你的秋招进展怎么样了
#
498636次浏览
13399人参与
#
如何缓解入职前的焦虑
#
33266次浏览
339人参与
#
找工作时遇到的神仙HR
#
176514次浏览
1738人参与
#
如何写一份好简历
#
257695次浏览
3896人参与
#
找工作,你会甘心进小厂还是猛冲大厂
#
34583次浏览
351人参与
#
通信硬件人笔面经互助
#
106018次浏览
2152人参与
#
市场营销面经
#
4358次浏览
124人参与
#
互联网公司评价
#
78797次浏览
1081人参与
#
无实习如何秋招上岸
#
222556次浏览
3490人参与
#
投了多少份简历才上岸
#
56278次浏览
945人参与
#
面试中的破防瞬间
#
82034次浏览
1010人参与
#
产品人求职现状
#
50368次浏览
743人参与
#
通信硬件薪资爆料
#
193973次浏览
1730人参与
#
软件开发投递记录
#
466973次浏览
7127人参与
#
23届的你们都什么时候入职?
#
84410次浏览
736人参与
#
互联网公司爆料
#
36223次浏览
367人参与
#
运营面经
#
11096次浏览
272人参与
#
科大讯飞求职进展汇总
#
36293次浏览
369人参与
牛客网
牛客企业服务