0

我在 Spring Boot 应用程序中有以下缓存实现,它可以正常工作。但是,我想为这种方法定义过期。是否可以设置过期时间@Cacheable

我看一下Expiry time @Cacheablespring boot,似乎没有直接的方法@Cacheable。是否有可能通过一种聪明的方法?

@Configuration
@EnableCaching
public class CachingConfig {

    @Bean
    public CacheManager cacheManager() {
        return new ConcurrentMapCacheManager();
    }
}
@Component
public class SimpleCacheCustomizer 
  implements CacheManagerCustomizer<ConcurrentMapCacheManager> {

    @Override
    public void customize(ConcurrentMapCacheManager cacheManager) {
        cacheManager.setCacheNames(asList("users"));
    }
}
@Cacheable("users")
public List<User> getUsers(UUID id) {...}
4

1 回答 1

1

正如Spring 文档中所说,Spring的默认缓存系统没有 TTL。

8.7. 如何设置 TTL/TTI/Eviction 策略/XXX 功能?

直接通过您的缓存提供程序。缓存抽象是一种抽象,而不是缓存实现。您使用的解决方案可能支持其他解决方案不支持的各种数据策略和不同拓扑(例如,JDK ConcurrentHashMap — 在缓存抽象中公开它是无用的,因为没有后备支持)。此类功能应直接通过后备缓存(配置时)或其本机 API 进行控制

如果您需要配置,则必须使用其他缓存提供Redis程序。GemfireTTL

此处提供了如何使用TTLwith的示例。Redis

于 2021-09-14T07:16:19.930 回答