Redis

关注公众号 jb51net

关闭
首页 > 数据库 > Redis > Redis缓存更新策略

浅谈Redis中的缓存更新策略

作者:刘婉晴

这篇文章主要介绍了浅谈Redis中的缓存更新策略,CacheAsidePatter是我们比较常用的缓存更新策略,其由缓存调用者在更新数据库时,在业务逻辑中设置缓存更新,需要的朋友可以参考下

在这里插入图片描述

在这里插入图片描述

1. 缓存更新策略综述

  1. 内存淘汰
    • 不用自己维护,利用 Redis 自己的内存淘汰机制 (内存不足时,触发策略,默认开启,可自己配置),其可在一定程度上保持数据一致性
  2. 超时剔除
    • 给数据添加 TTL,到期之后自动剔除,是最终一致性
  3. 自动更新
    • 编写业务逻辑,修改数据库时,更新缓存,一致性高,维护成本高

2. 缓存策略的选择

选择内存策略,要基于业务场景 —— 低一致性需求,高一致性需求

在这里插入图片描述

3. 主动更新策略

缓存的主动更新策略又分为以下三种:

在这里插入图片描述

4. Cache Aside Pattern

Cache Aside Patter 是我们比较常用的缓存更新策略,其由缓存调用者在更新数据库时,在业务逻辑中设置缓存更新。对 Cache Aside Pattern ,有以下三个问题比较重要。

线程问题:使用先操作数据库,再删除缓存。先操作数据库再操作缓存,能减少发生问题的概率。

如下是两种线程不安全问题产生的场景,但是因为缓存的操作数据的速度是远远高于数据库写操作的速度的,因此先操作数据库再删除缓存,出现问题的可能性低。

在这里插入图片描述

5.代码实现

在更新代码中,加入删除缓存的逻辑即可,代码示例如下:

    @Override
    public Result update(Shop shop) {
        if(shop == null){
            return Result.fail("店铺不能为 null");
        }
        // 更新数据库
        updateById(shop);
        // 删除缓存
        stringRedisTemplate.delete(CACHE_SHOP_KEY + shop.getId());
        return Result.ok();
    }

到此这篇关于浅谈Redis中的缓存更新策略的文章就介绍到这了,更多相关Redis缓存更新策略内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文