如何按小时使 Spring 缓存中的条目无效?
How to invalidate an entry from Spring cache based on hourly basis ?
我们正在使用 Spring 缓存来缓存少量元素。因此,每当用户请求相同的元素键时,它都会进入缓存并检查它是否可用。如果可用,则从缓存中获取,否则执行该方法。但在此之前,我想在缓存中再实现一项功能。
要求:我的 spring 缓存将每小时检查一次,如果缓存中的任何元素存在超过一个小时,它将删除它。
我在 google 上搜索,但没有找到令人满意的 link。有人可以帮助我或为我提供 link 吗?
您需要为缓存设置生存时间 (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();
}
}
我们正在使用 Spring 缓存来缓存少量元素。因此,每当用户请求相同的元素键时,它都会进入缓存并检查它是否可用。如果可用,则从缓存中获取,否则执行该方法。但在此之前,我想在缓存中再实现一项功能。
要求:我的 spring 缓存将每小时检查一次,如果缓存中的任何元素存在超过一个小时,它将删除它。
我在 google 上搜索,但没有找到令人满意的 link。有人可以帮助我或为我提供 link 吗?
您需要为缓存设置生存时间 (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();
}
}