I am using Redis Cache in my Spring Boot application to store data of multiple rest API's.
I am clearing Redis cache on a regular interval using Spring Cron Jobs. The method is getting called at required time-slots.
I have verified the logs but the cache is not getting clear and hence it is showing the stale data.
The code where I'm trying to clear the cache.
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"); }}
Custom cache configuration code.
@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; } }
How to fix the code to clear the redis cache ?