写失败数据写入成功_缓存与数据库的一致性问题怎么解?三招帮你搞定「程序员必备」...

通常在高性能要求的场景,我们的系统设计会把数据存储到DB,然后冗余一份数据在缓存中。读请求优先从缓存读取数据,未命中缓存再从DB读取,如下图:

80568ade8c6979e433ecb6a4a969a3c6.png

欢迎关注笔者,优质文章都在这里等你。

这样做的好处是可以减小DB的压力,提高请求的响应速度。

但这种架构在提升系统读请求处理能力的同时,给系统写请求的处理带来了不少的麻烦。因为数据在DB跟缓存中各自保存了一份,如何保证它们之间的数据一致就是本文要讨论的问题。

当处理写请求时有两种方式:

一、先写缓存再写DB

如果第一步写缓存失败,直接返回,无影响。

如果缓存写成功,DB写失败,此时如果不清除缓存中已写入的数据,则会造成数据不一致(缓存中是新值,DB中是旧值)。

如果增加清除缓存的逻辑,那么清除操作又失败了该如何处理?

二、先写DB再写缓存

如果DB写入失败,直接返回,无影响。

如果DB写入成功,缓存写入失败则会造成数据不一致(即DB中是新值,缓存中是旧值)。

如果重试写入缓存,那重试也失败该如何处理?

三、问

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值