【发布时间】:2021-10-02 14:00:28
【问题描述】:
基于this answer,我尝试将自定义expireAfterWrite 用于“customCache”
所以我的配置如下所示:
@Configuration
@EnableCaching
public class CaffeineCacheConfig {
...
@Bean
public CaffeineCacheManager cacheManager(Caffeine<Object, Object> caffeineCacheBuilder) {
CaffeineCacheManager result = new CaffeineCacheManager();
result.setCaffeine(caffeineCacheBuilder);
return result;
}
@Bean
public Caffeine<Object, Object> caffeineCacheBuilder() {
return Caffeine.newBuilder()
.maximumSize(10000)
.expireAfterWrite(60, TimeUnit.SECONDS)
.recordStats();
}
@Bean
public CaffeineCache customCache() {
return new CaffeineCache("customCache",
Caffeine.newBuilder()
.maximumSize(10000)
.expireAfterWrite(60, TimeUnit.MINUTES)
.recordStats()
.build());
}
}
然后在codeBase中我使用:
“自定义缓存”
Cache cache = cacheManager.getCache("customCache")
String result = cache.get("myKey", () -> "cachedValue")
根据我的实验,它会将缓存中的值保持 60 秒,预计 60 分钟。
如何达到预期的效果?
【问题讨论】:
-
对不起,我对 Spring 不熟悉。我相信您可以在这种情况下使用registerCustomCache。
-
@Ben Manes hm...spring 5.1.19 没有这种方法
-
自 5.2.8 起可用
标签: java spring caching caffeine-cache