我们使用Spring缓存来缓存一些元素。因此,每当用户请求元素的相同键时,它就会进入缓存并检查其是否可用。如果可用,则从缓存中获取,否则执行该方法。但是在这一切之前,我想在我的缓存中实现另一种功能。
要求:按小时,我的spring缓存将检查,如果缓存中的任何元素存在超过一个小时,它将删除它。
我在Google上搜索,但未找到任何令人满意的链接。有人可以帮我还是为我提供链接?
最佳答案
您需要为缓存设置生存时间(TTL)。您如何执行此操作取决于您的现金提供者。可以在此处找到几个示例:
Can I set a TTL for @Cacheable
@EnableCaching
@Configuration
public class CacheConfiguration implements CachingConfigurer {
@Override
public CacheManager cacheManager() {
ConcurrentMapCacheManager cacheManager = new ConcurrentMapCacheManager() {
@Override
protected Cache createConcurrentMapCache(final String name) {
return new ConcurrentMapCache(name,
CacheBuilder.newBuilder().expireAfterWrite(30, TimeUnit.MINUTES).maximumSize(100).build().asMap(), false);
}
};
return cacheManager;
}
@Override
public KeyGenerator keyGenerator() {
return new DefaultKeyGenerator();
}
}