如何保证缓存一致性

本文探讨了四种缓存更新策略,包括先更新数据库再更新缓存、先更新缓存再更新数据库、先淘汰缓存再更新数据库以及先更新数据库再淘汰缓存。在并发大时,方案一和二可能导致数据不一致。先淘汰缓存再更新数据库的策略在高并发下可能存在短暂不一致,而先更新数据库再淘汰缓存被推荐为最佳实践。解决方案包括采用异步更新缓存、串行化读写操作和双删策略。
摘要由CSDN通过智能技术生成

目前有四种更新缓存的策略
1.先更新数据库,再更新缓存
2.先更新数据库,再更新缓存
3.先淘汰缓存,再更新数据库
4.先更新数据库,再淘汰缓存

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

先更新数据库,再更新缓存


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

对于上述两种更新方案,当并发较大,同时有两个线程需要对同一个数据进行更新时,可能会出现以下问题:
方案一、先更新(update)缓存,再更新数据库
  线程A更新了缓存
  线程B更新了缓存
  线程B更新了数据库
  线程A更新了数据库
方案二、先更新数据库,再更新(update)缓存
  线程A更新了数据库
  线程B更新了数据库
  线程B更新了缓存
  线程A更新了缓存
总结一下就是,在并发大的情况下,容易出现缓存中存储的不是最后一次提交更新请求的数据。
而且当更新的逻辑比较复杂的时候,我们可能需要取数据库中的其他数据与缓存中的数据进行计算,此时缓存需要与数据库的数据进行多次交互,更新缓存的消耗太多,所以建议直接淘汰缓存。


3.先淘汰缓存,再更新数据库

在正常情况下,A、B两个线程先后对同一个数据进行读写操作:
  A线程进行写操作,先淘汰缓存,再更新数据库

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值