Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why Redis Cache is not getting empty in my Spring Boot application?

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 ?

like image 581
Loren Avatar asked Jun 05 '20 10:06

Loren


1 Answers

1) Have you enabled the cache using @EnableCaching annotation? 2) why are you using @CacheEvict and clear() in the same method? Both serves the same purpose. Use either one of them.

like image 131
rahulP Avatar answered Nov 15 '22 01:11

rahulP