RedisCacheManager 设置过期一定时间

RedisCacheManager set expires certain time

我刚开始使用 RedisCacheManager,有没有办法将缓存设置为在特定时间过期,例如午夜?

例如,我可以将缓存过期时间设置为一天,一切正常,但我想让缓存在特定时间过期。

谢谢!

在撰写本文时,没有可以启用所需行为的配置选项。我已经打开 DATAREDIS-772 来调查这个问题。请随时在那里添加想法。

我找到了使用计划任务 (spring) 的变通方法,但注释最好:

@Autowired
public ClearCacheTask(final @NotNull CacheManager cacheManager) {
  this.cacheManager = cacheManager;
}

@Scheduled(cron="0 0 0 * * ?")
@Async
public void resetCacheMidnight() {
  logger.info("Cron Task resetCacheMidnight(), clearing following caches...");

  cacheManager.getCacheNames().parallelStream().forEach(name ->  {
    cacheManager.getCache(name).clear();

    logger.info("...{} cache cleared", name);
  });      
}