首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Spring的L1 + L2缓存策略

使用Spring的L1 + L2缓存策略
EN

Stack Overflow用户
提问于 2018-12-14 19:43:11
回答 1查看 1.7K关注 0票数 3

我正在尝试设置L1 + L2缓存策略,以便与@Cacheable注释一起使用。我的目标是

  1. 配置咖啡因缓存
  2. 配置Redis缓存
  3. 在咖啡因缓存中查找项目,如果找到返回,否则第4步
  4. 在Redis Cache中查找项目,如果发现返回并在咖啡因中缓存,其他步骤5
  5. 使用真正的服务返回结果。

我知道这是不受支持的,但我一直试图阅读关于如何连接这样一个解决方案的文档。

我目前的解决方案是包装我的实际服务RedisBackedService,它在cacheable注释上有redisCacheManager,然后包装在CaffeineBackedService中,CaffeineBackedServicecacheable注释上有一个caffeineCacheManager。不用说,这似乎是多余的。

任何指示都会有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-18 07:32:11

因此,在这里总结并提供一个基于注释的答案,这不是缓存抽象的特性,但是缓存抽象的SPI非常简单,您可以自己实现一些东西。

代码语言:javascript
复制
public class FallbackCache implements Cache {

  private final Cache primaryCache;
  private final Cache fallbackCache;

  FallbackCache(Cache primaryCache, Cache fallbackCache) { ... }

  public ValueWrapper get(Object key) {
    ValueWrapper wrapper = primaryCache.get(key);
    if (wrapper != null) {
      return wrapper;
    }
    return fallbackCache.get(key);
  }

  // other methods

}

有些方法,比如本机缓存访问器,对于这个用例来说可能有点棘手。我会返回主缓存,并隐藏调用方有退路的事实。

如果您预先知道您的缓存,那么您可以创建它们并将它们包装在SimpleCacheManager中。如果您需要动态创建它们,CacheManager API要求您实现两个简单的方法。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53786000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档