Adi*_*l F 3 spring-data-redis spring-boot spring-cache caffeine
我正在尝试设置 L1 + L2 缓存策略以与@Cacheable注释一起使用。我的目标是
我知道这不受开箱即用的支持,但我一直在尝试阅读有关如何连接此类解决方案的文档。
我当前的解决方案是将我的实际服务包装在RedisBackedService具有注释的 a 中,而该服务又包装在具有注释的a 中。不用说,这似乎是多余的。redisCacheManagercacheableCaffeineBackedServicecaffeineCacheManagercacheable
任何指示都会有帮助。
因此,在这里总结并根据评论提供答案,这不是缓存抽象的功能,但缓存抽象的 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
}
Run Code Online (Sandbox Code Playgroud)
对于此用例,某些方法(例如本机缓存访问器)可能有点棘手。我将返回主缓存并隐藏调用者有回退的事实。
如果您预先知道缓存,那么您可以创建它们并将它们包装在SimpleCacheManager. 如果您需要动态创建它们,CacheManagerAPI 要求您实现两个简单的方法。
| 归档时间: |
|
| 查看次数: |
2364 次 |
| 最近记录: |