RedisTemplate getExpire () возвращает неожиданное значение в Springcache - PullRequest
0 голосов
/ 11 марта 2020

Я хочу обновить sh кеш, когда истекает срок действия. Поэтому я переопределяю часть Springcache и управляю кэшем в своем собственном redisCacheManager.

Все работает нормально, но при запуске метода get неожиданные значения возвращаются в моем собственном CustomizedRedisCache. В то время ключ кеша в Redis действительно был тем же, что и свойство «cacheKey».

    @Override
    public ValueWrapper get(final Object key) {
        ValueWrapper valueWrapper = super.get(key);
        if (null != valueWrapper) {
            String cacheKey = this.createCacheKey(key);
            log.info("cache name in redis = {}", cacheKey);
            Long ttl = this.redisTemplate.getExpire(cacheKey, TimeUnit.SECONDS);
            log.info("{}s before expire ", ttl);
        }
        return valueWrapper;
    }

Поле ttl всегда возвращает -2. И я не понимаю, что это значит.

1 Ответ

0 голосов
/ 11 марта 2020

Из документации redis:

Начиная с Redis 2.8, возвращаемое значение в случае ошибки изменяется:

  • Команда возвращает -2, если ключ не существует.
  • Команда возвращает -1, если ключ существует, но с ним не связано истечение срока действия.

Я бы порекомендовал вам убедиться, что ключ правильный и действительно существует в redist когда getExpire выполняется

...