Redis学习笔记——缓存更新策略

一,缓存

●缓存就是数据交换的缓冲区,是存储数据的临时地方,一般读写性能较高

●应用层缓存
将数据库的部分数据放在缓存中,当请求到达应用层直接查询缓存
可以降低对数据库的访问,提高性能。于是可以使用Redis作为缓存。

二,缓存更新策略

1、内存淘汰:不用自己维护,利用Redis的内存淘汰机制,当内存不足时自动淘汰部分数据。下次查询时更新缓存。

2、超时剔除:给缓存数据添加TTL时间,到期后自动删除缓存。下次查询时更新缓存。

3、主动更新:编写业务逻辑,在修改数据库的同时,更新缓存。

所以我们可以采取当一致性要求不高时可以用内存淘汰机制+超时剔除,一致性要求很高时使用主动更新+超时剔除

三,主动更新策略

内存淘汰与超时剔除很容易实现,主要看看主动更新策略。

1、主动更新策略也有几个不同的方案:

●由缓存的调用者更新数据库的同时更新缓存(需要编码)
●将缓存与数据库整合为一个服务,由服务来维护一致性。调用者调用该服务,无需关心缓存一致性问题。(维护困难)
●调用者只操作缓存,由其它线程异步的将缓存数据持久化到数据库。保证最终一致。(容易丢失数据)

2、另外,选择更新后缓存是更新还是删除也会产生不同的效果

更新缓存:每次更新数据库都更新缓存,无效写操作较多
删除缓存:更新数据库时让缓存失效,查询时再更新缓存

最后附上更新的代码

@Override
    @Transactional
    public Result updateShop(Shop shop) {
        if(shop.getId() == null){
            return Result.fail("商铺id不能为空!");
        }
        updateById(shop);
        stringRedisTemplate.delete("shop:detail:"+shop.getId());
        return Result.ok();
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值