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


    一,缓存

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

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

    二,缓存更新策略

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

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

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

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

    三,主动更新策略

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

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

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

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

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

    最后附上更新的代码

    1. @Override
    2. @Transactional
    3. public Result updateShop(Shop shop) {
    4. if(shop.getId() == null){
    5. return Result.fail("商铺id不能为空!");
    6. }
    7. updateById(shop);
    8. stringRedisTemplate.delete("shop:detail:"+shop.getId());
    9. return Result.ok();
    10. }

  • 相关阅读:
    Vue3+TS+Node打造个人博客(前端架构)
    JavaScript Promise
    AAC音频格式ADTS头详解
    Java Object 类
    智能微型断路器的功能有哪些?和网关搭配的作用在哪?
    node笔记记录28aynsc和await之3
    day3:Node.js 基础知识
    Python-魔法函数
    给好朋友用代码画一个爱心吧
    【Golang | reflect】利用反射实现方法的调用
  • 原文地址:https://blog.csdn.net/jtjeeeee/article/details/126919882