我正在尝试设置L1 + L2缓存策略,以便与@Cacheable注释一起使用。我的目标是
我知道这是不受支持的,但我一直试图阅读关于如何连接这样一个解决方案的文档。
我目前的解决方案是包装我的实际服务RedisBackedService,它在cacheable注释上有redisCacheManager,然后包装在CaffeineBackedService中,CaffeineBackedService在cacheable注释上有一个caffeineCacheManager。不用说,这似乎是多余的。
任何指示都会有帮助。
发布于 2018-12-18 07:32:11
因此,在这里总结并提供一个基于注释的答案,这不是缓存抽象的特性,但是缓存抽象的SPI非常简单,您可以自己实现一些东西。
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要求您实现两个简单的方法。
https://stackoverflow.com/questions/53786000
复制相似问题