【发布时间】:2020-09-24 12:12:35
【问题描述】:
我在我的 Spring Boot 应用程序中使用 Redis Cache 来存储多个 REST API 的数据。
我正在使用 Spring Cron Jobs 定期清除 Redis 缓存。该方法在所需的时间段被调用。
我已经验证了日志,但缓存没有变得清晰,因此它显示的是过时的数据。
我试图清除缓存的代码。
public class CustomerDerivation {
@Autowired
@Qualifier("redisCacheMngr")
CacheManager redisCacheMngr;
@Scheduled(cron = "${redis.api.update.interval}")
@CacheEvict(value = "redis-cache", allEntries = true, cacheNames = {"redis-cache"})
protected void cacheEvict() {
redisCacheMngr.getCache("redis-cache").clear();
logger.info("Evicting ModelCache");
}
}
自定义缓存配置代码。
@Configuration
@Profile("cloud")
public class CacheConfig extends AbstractCloudConfig {
@Autowired
Environment env;
@Bean
public RedisConnectionFactory brRedisFactory() {
return connectionFactory().redisConnectionFactory(env.getProperty("model_cache_name"));
}
@Bean
public RedisTemplate<String, Object> brRedisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
redisTemplate.setConnectionFactory(brRedisFactory());
return redisTemplate;
}
@Bean(name = "redisCacheMngr")
public CacheManager cacheManager() {
RedisCacheManager cacheManager = new RedisCacheManager(brRedisTemplate());
cacheManager.setUsePrefix(true);
cacheManager.setTransactionAware(true);
return cacheManager;
}
}
如何修复清除redis缓存的代码?
【问题讨论】:
-
你有
@EnableCaching注解吗?启用弹簧缓存。
标签: java spring spring-boot redis