Получен аналогичный результат, как предложено @Bozho
Если параметр запроса refresh-cache = true передан, кеш обойдется
Я расширил DefaultRedisCacheWriter и использовал его в качестве CacheWriter
RedisCacheManager cacheManager = RedisCacheManager
.builder(new RefreshableRedisCacheWriter(redisConnectionFactory()))
.cacheDefaults(cacheConfiguration)
.build();
Переписать метод get () в этом модуле записи
@Override
public byte[] get(String name, byte[] key) {
Assert.notNull(name, "Name must not be null!");
Assert.notNull(key, "Key must not be null!");
HttpServletRequest request = ApiRequestContext.getRequestContext();
if (Boolean.valueOf(request.getParameter("refresh-cache"))) {
logger.info("bypassing cache for key: {}", key);
return null;
}
return execute(name, connection -> connection.get(key));
}
ApiRequestContext - это пользовательский объект запроса, который хранится в локальном потоке.
Обратите внимание, что когда этот метод возвращает значение NULL, значение извлекается из базы данных и помещается обратно в кеш, эффективно обновляя кеш.