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

删除补偿

当出现在删除缓存之前,系统突然崩溃或者出现了其他问题,那么缓存中的数据就会变得过时,因为缓存删除操作并未被执行时,可以用删除补偿的解决方案。

 

这个解决方案的核心是引入消息队列来确保在更新数据库成功后,Redis缓存的删除操作能够最终被成功执行,即使在首次尝试时遇到了失败。具体的操作步骤如下:

 

系统首先对数据库进行更新操作。

接着,系统试图删除对应的Redis缓存。如果这一步骤失败,那么系统将会把待删除的Redis键值作为消息发送到消息队列中。

在后续的某个时间点,系统会从消息队列中取出这个待删除的Redis键值,并再次尝试删除操作。

 

优点

它提供了一种容错机制,使得即使在Redis缓存删除操作初次失败的情况下,仍然有可能在后续的重试中成功,这有助于保持数据库和Redis缓存的数据一致性。

 

缺点

它会引入额外的系统复杂性,因为我们需要维护一个消息队列,并确保消费者服务的正常运行。另外,这种方案也可能会导致数据在一段时间内不一致,即当Redis删除操作失败,到消息被消费并且再次执行删除操作的这段时间内,数据库和缓存的数据会是不一致的。这种情况在大多数情况下可能不会造成问题,但如果有严格的实时性要求,可能需要采取其他策略。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值