【尽可能保证缓存和数据库一致性】

学习地址原文:https://www.zhihu.com/question/319817091/answer/2110995185

我仔细阅读文章之后

先更新缓存,在更新数据库,会发生数据库和缓存的不一致 

先更新数据库,在更新缓存  如果有并发的情况下会有不一致的问题

所以采用先更新数据库,再删除缓存的策略

“更新”缓存会降低缓存命中率,浪费服务器资源  所以要删除缓存

得到最后的解决方案是:

1、先更新数据库

2、 再删除缓存 (MQ)

意思是在第二步引入MQ删除缓存的方案

第二步引入mq是因为mq有完美的重试机制,解决了第二步失败的问题

使用延迟队列是解决 (主从库同步)场景下的问题,时间需要自己评估

那可能有这样的疑问:

然后针对于主从库延迟和延迟双删问题

是关于「读写分离 + 主从复制延迟」情况下,缓存和数据库一致性的问题

那解决办法还是把缓存删掉

但是,不能立即删,而是需要「延迟删」,这就是业界给出的方案:缓存延迟双删策略

如果看不懂我解释的,可以看原文章

对于mq延时队列我这个文章内第7部分有实操:

.NetCore 使用 RabbitMQ (交换机/队列/消息持久化+mq高级特性+死信队列+延迟队列)_netcore rabbitmq-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值