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);
});
}
我刚开始使用 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);
});
}