数据库缓存一致性解决方案

2 篇文章 0 订阅
本文讨论了在数据库更新时如何保持缓存与数据库数据一致性的问题,提出了三种常见策略:同步删除、延迟双删和异步监听Binlog删除。同步删除可能导致脏数据,延迟双删难以精确控制延迟时间,而异步监听Binlog虽然有较大脏数据窗口但能确保最终一致。每种策略都有其优缺点,需要根据实际场景权衡选择。
摘要由CSDN通过智能技术生成

在日常开发当中为了提高响应率,减少响应时长,缓存是一定会用的。那么在修改数据库的时候缓存的更新肯定会有延迟,如何保存缓存和数据库数据的一致性是一个问题。

方案1:同步删除

顾名思义在修改数据库数据的时候,同步删除缓存

缺点:
1、不能保证每个入口都能同步删除
2、如果直接修改数据库不能同步删除
3、如果缓存删除失败,会出现脏数据

方案2: 延迟双删

删除缓存-》修改数据库-〉等待一段时间在删除一次缓存

缺点:
1、无法确定延迟时间(主从同步会出现延迟)
2、无法绝对保障数据一致

方案3: 异步监听binlog删除+重试

使用中间件监听数据库产生的binlog-》删除缓存数据(消费失败重试)

缺点:
1、相对于同步删除,脏数据窗口较大(相对来说,实际上时间是比较短的)
2、mq可能挂机(几率较小)
3、新老库迁移,可能出现数据不一致(大部分场景不会出现)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值