gpt4 book ai didi

java - 使用 Spring 或 ScheduledExecutorService 重新填充 ehcache 值

转载 作者:行者123 更新时间:2023-12-01 12:19:41 24 4
gpt4 key购买 nike

我使用 Spring + Ehcache 返回字符串列表:

@Cacheable(value = "test", key = "\"myKey"")
public List<String> getValues() {
return getMyValues();
}

Ehcache可以配置为超时时自动重新填充缓存吗?我知道使用 @CacheEvict 来清除缓存,但这是一个手动操作。

更新:

这是一个可能的解决方案:

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;

import org.springframework.beans.factory.annotation.Autowired;

public class MyCacheScheduler {

public void repopulateCache(){

ScheduledExecutorService scheduledExecutorService =
Executors.newScheduledThreadPool(5);

@SuppressWarnings({ "rawtypes", "unchecked" })
ScheduledFuture scheduledFuture =
scheduledExecutorService.schedule(new Callable() {
public Object call() throws Exception {
myCache.clearCache();
myCache.populateCache();
return "";
}
},
30,
TimeUnit.SECONDS);

try {
System.out.println("result = " + scheduledFuture.get());
} catch (Exception e) {
e.printStackTrace();
}
}


@Autowired
private MyCacheManagerImpl myCache;
}

最佳答案

Ehcache 为此提供了一些内置解决方案,但是它们需要对您使用缓存的方式进行一些调整。

参见this answer了解更多详情。

这些构造不会通过 Spring 的缓存抽象公开,请参阅 point 29.7 Spring 缓存文档。

关于java - 使用 Spring 或 ScheduledExecutorService 重新填充 ehcache 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26784380/

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