Кэширование с истекшим сроком действия Redis ничего не очищает

#java #spring #spring-boot #redis

#java #весна #весенняя загрузка #redis

Вопрос:

Я установил срок действия для ключа ‘editorial’ на одну минуту, и кэширование не удалялось из базы данных Redis

 @Primary
@Bean(name = "redisTemplate")
public RedisTemplate<String, Object> redisTemplate() throws Exception {

    RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
    redisTemplate.setConnectionFactory(jedisConnectionFactory());
    redisTemplate.afterPropertiesSet();
    redisTemplate.expire("editorial", 1, TimeUnit.MINUTES);
    redisTemplate.expire("s3-files", 5, TimeUnit.MINUTES);
    initRedisSerializer(redisTemplate);
    return redisTemplate;
}
  

Ответ №1:

Redis не выполняет физическое удаление в реальном времени, когда срок действия ключа истек.

Вместо этого он выполняет что-то вроде пассивного удаления. В соответствии с другой стратегией удаления с истекшим сроком действия, при необходимости выполняется операция удаления. Вы можете проверить это здесь (https://www.programmersought.com/article/64021141500 /)

Но, если вы попытаетесь прочитать ключ с истекшим сроком действия, вы его не получите.