怎么实现保持数据库和缓存数据的一致性

在开发中缓存的使用是特别普遍的,使用缓存可以提高请求的响应速度,还可以减少请求到达DB的次数。
但是当你使用缓存的时候就可能面临着缓存里面的数据和你数据库里面存储的数据是不一样的,这样就会导致你请求到的数据都是旧数据。

解决方案:

  1. 更新数据库,然后再删除缓存
    读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。
    更新的时候,先更新数据库,然后再删除缓存。

但是这样还是会有问题的,就是当你更新数据库的时候更新成功了,但是在你删除缓存的时候删除失败,这个时候你就会发现缓存里面的都是旧数据,那么你就也会导致数据不一致,所以这个方法还是会有问题的。
这里还有一个点就是更新数据库,但是缓存做的是删除缓存,而不是更新缓存,这是你在缓存里面的数据不一定是和你更新的那个表字段是对应的,你缓存里面的数据可能是涉及到别的表,是多个表的一个集合,所以你每次更新的话还需要进行别的表的操作就比较麻烦。还有就是当你每次更新数据库的时候都更新缓存,但是你缓存更新了之后可能还没有被访问又要更新数据库,这样会导致你的开销就比较大。所以你可以在更新数据库的时候删除缓存,当有请求进来的时候再去查找放入数据库,如果没有请求的话就不用去放入。

  1. 先删除缓存,然后更新数据库
    这样的话你在更新数据库的前面可以先删除缓存,然后再来更新数据库,如果你的数据在更新数据库的时候失败了,但是你的缓存里面是空的,所以下次请求过来的时候回去查看缓存,缓存没有的话就会去查数据库,这样也就不会导致缓存和数据库数据不一致的问题了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值