再有人问你数据库缓存一致性的问题,直接把这篇文章发给他

本文探讨了数据库和缓存一致性问题,建议优先选择删除缓存而非更新,以简化操作并减少数据不一致。分析了"先写数据库后删除缓存"和"先删除缓存后写数据库"的优缺点,并提出延迟双删策略以降低并发导致的数据不一致。此外,介绍了Read/Write Through和Write Behind Caching模式。
摘要由CSDN通过智能技术生成

在之前的一篇文章《为什么会出现数据库和缓存不一致的问题》中,我们介绍过缓存和数据库会出现数据不一致的几种情况。

我们提到过,在数据库和缓存的操作过程中,可能存在”先写数据库,后删缓存”、”先写数据库,后更新缓存”、”先删缓存库,后写数据库”以及”先更新缓存库,后写数据库”这四种。

那么,到底是应该删除缓存好呢,还是更新缓存好呢?到底应该先操作数据库呢还是先操作缓存呢?哪种方案更好呢?又该如何选择呢?

本文就来展开分析一下。

删除还是更新

为了保证数据库和缓存里面的数据是一致的,很多人会很多人在做数据更新的时候,会同时更新缓存里面的内容。但是我其实告诉大家,应该优先选择删除缓存而不是更新缓存。

首先,我们暂时抛开数据一致性的问题,单独来看看更新缓存和删除缓存的复杂的的问题。

我们放到缓存中的数据,很多时候可能不只是简单的一个字符串类型的值,他还可能是一个大的JSON串,一个map类型等等。

举个栗子,我们需要通过缓存进行扣减库存的时候,你可能需要从缓存中查出整个订单模型数据,把他进行反序列化之后,再解析出其中的库存字段,把他修改掉,然后再序列化,最后再更新到缓存中。

可以看到,更新缓存的动作,相比于直接删除缓存,操作过程比较的复杂,而且也容易出错。

还有就是,在数据库和缓存的一致性保证方面,删除缓存相比更新缓存要更简单一点。

我们在《为什么会出现数据库和缓存不一致的问题》中介绍过的"写写并发"的场景中,如果同时更新缓存和数据库,那么很容易会出现因为并发的问题导致数据不一致的情况。如:

先写数据库,再更新缓存

先更新缓存,后写数据库:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值