On application (spring boot service) startup, need to clear the Redis cache.
Redis is running in a different docker container with own volume mapping. Since it retains the old cache, the application picks the data from Redis cache instead of Database even after the application restarts
- Tried
@EventListener
forContextRefreshedEvent
and it is never getting called. - Tried with
@PostConstruct
in ApplicationMain class, but it doesn't clear the cache. Tried using
@CacheEvict(allEntries = true)
, but still no luck@Component public class ApplicationStartUp {
@Autowired private CacheManager cacheManager; @EventListener() public void onApplicationEvent(ContextStartedEvent event) { cacheManager.getCacheNames() .parallelStream() .forEach(n -> cacheManager.getCache(n).clear()); }
}
cacheManager.getCacheNames()
? It's possible the cache manager doesn't return any, on start up. As a test, try using@PostConstruct
andcacheManger.getCache("your cache").clear()
. – Kosiur