多个咖啡因LoadingCaches添加到Spring CaffeineCacheManager

我想在Spring CacheManager中添加几个不同的LoadingCache,但是我不知道如何使用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,则可以将各个缓存公开为bean(所以org.springframework.cache.Cache实现),我们将检测它们并自动为您创建SimpleCacheManager.

请注意,此策略允许您使用不同实现的缓存抽象.第一个可能是咖啡因缓存,第二个是另一个提供商的缓存.

上一篇:(很全面)SpringBoot 使用 Caffeine 本地缓存


下一篇:MySQL整理笔记