gpt4 book ai didi

spring - Spring CaffeineCacheManager 中添加了多个 Caffeine LoadingCache

转载 作者:行者123 更新时间:2023-12-02 20:52:14 34 4
gpt4 key购买 nike

我希望添加几个不同的 LoadingCache到 Spring CacheManager ,但是我不明白如何使用 CaffeineCacheManager 实现这一点。看来只有一个加载器可以刷新内容,但是我需要为每个缓存使用单独的加载器。是否可以向 Spring 缓存管理器添加多个加载缓存?如果是这样,那么如何?

CaffeineCacheManager cacheManage = new CaffeineCacheManager();

LoadingCache<String, Optional<Edition>> loadingCache1 =
Caffeine.newBuilder()
.maximumSize(150)
.refreshAfterWrite(5, TimeUnit.MINUTES)
.build(test -> this.testRepo.find(test));

LoadingCache<String, Optional<Edition>> loadingCache2 =
Caffeine.newBuilder()
.maximumSize(150)
.refreshAfterWrite(5, TimeUnit.MINUTES)
.build(test2 -> this.testRepo.find2(test2));

// How do I add to cache manager, and specify a name?

最佳答案

是的,这是可能的。由于您需要微调每个缓存,因此您可能更擅长自己定义它们。回到您的示例,下一步是:

SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(Arrays.asList(
new CaffeineCache("first", loadingCache1),
new CaffeineCache("second", loadingCache2)));

然后您可以照常使用它,例如

@Cacheable("first")
public Foo load(String id) { ... }

如果您使用 Spring Boot,您可以将单个缓存公开为 beans(因此 org.springframework.cache.Cache 实现),我们将检测它们并创建一个 SimpleCacheManager自动为您服务。

请注意,此策略允许您将缓存抽象与不同的实现一起使用。 first可能是咖啡因缓存和 second来自另一个提供商的缓存。

关于spring - Spring CaffeineCacheManager 中添加了多个 Caffeine LoadingCache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44507309/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com