如何根据每小时基础从Spring缓存中使条目无效?

时间:2017-10-02 16:03:32

标签: java spring caching spring-cache

我们使用Spring缓存来缓存一些元素。因此,每当用户请求相同的元素键时,它就会进入缓存并检查它是否可用。如果可用,则从缓存中获取,否则执行该方法。但在此之前,我想在缓存中实现另外一项功能。

要求:按小时计算,我的弹出缓存将检查,如果缓存中的任何元素存在超过一个小时,它将删除它。

我在谷歌搜索但没有找到任何令人满意的链接。有人可以帮助我或为我提供链接吗?

1 个答案:

答案 0 :(得分:1)

您需要为缓存设置生存时间(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();
    }

}