缓存更新策略

缓存更新策略

内存淘汰超时剔除主动更新
说明利用Redis的内存淘汰机制,不用自己维护,当内存不足时会自动淘汰部分数据。下次查询时更新缓存。给缓存数据添加TTL(过期时间),到期后自动删除缓存。下次查询时更新缓存。编写业务逻辑,在修改数数据库的同时更新缓存
一致性一般
维护成本

业务场景:

  • 低一致性需求:使用内存淘汰机制。例如店铺类型的查询缓存
  • 高一致性需求:主动更新,并以超时剔除作为兜底方案。例如店铺详情查询的缓存

操作缓存和数据库需要考虑的三个问题:

  1. 删除缓存还是更新缓存?

    • 更新缓存:每次更新数据库都要更新缓存,无效写的操作增多
    • 删除缓存:更新数据库时让缓存失效,查询时再更新缓存
  2. 如何保证缓存与数据库的操作同时成功或失败(事务一致性)?

    • 单体系统,将缓存和数据库操作放在一个事务中
    • 分布式系统,使用TCC等分布式事务方案
  3. 先操作缓存还是先操作数据库?

    • 先删除缓存,再操作数据库(下图为异常情况,导致数据不一致,发生概率高)

      image-20230514104815859

    • 先操作数据库,再删除缓存(下图为异常情况,但更新数据库操作一定比写入缓存速度慢,则此情况发生的概率很低)

      image-20230514105147434

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值