缓存和数据库的一致性问题

本文探讨了缓存和数据库一致性问题,分析了更新缓存的两种策略及其并发问题,提出删除缓存的策略同样存在并发导致的不一致。在主从库延迟和延迟双删问题中,介绍了如何通过延迟删除缓存来降低不一致概率。文章指出,追求强一致性往往牺牲性能,而使用缓存意味着必须接受一定程度的一致性问题,推荐采用更新数据库后删除缓存的策略,并结合消息队列或订阅数据库变更日志来保证数据一致性。
摘要由CSDN通过智能技术生成

目录

一、前言

二、更新缓存

1) 先更新缓存,后更新数据库

2) 先更新数据库,后更新缓存

三、删除缓存

3) 先删除缓存,后更新数据库

4) 先更新数据库,后删除缓存

四、主从库延迟和延迟双删问题

五、可以做到强一致吗?

六、总结

七、后记


一、前言

在讨论缓存和数据库的一致性问题之前,我们首先要明白:

  • 写请求只写数据库

  • 读请求先读缓存,如果缓存不存在,则从数据库读取,并重建缓存

  • 同时,写入缓存中的数据,都设置失效时间

二、更新缓存

再来看数据一致性问题。

当数据发生更新时,我们不仅要操作数据库,还要一并操作缓存。具体操作就是,修改一条数据时,不仅要更新数据库,也要连带缓存一起更新。

但数据库和缓存都更新,又存在先后问题,那对应的方案就有 2 个:

  1. 先更新缓存,后更新数据库

  2. 先更新数据库,后更新缓存

哪个方案更好呢?

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值