RedisTemplate getExpire()在Springcache中返回意外值

我想在快满时刷新缓存。因此,我覆盖了部分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,我不明白那是什么意思。

a710262403 回答:RedisTemplate getExpire()在Springcache中返回意外值

来自redis文档:

从Redis 2.8开始,如果发生错误,则返回值:

  • 如果键不存在,则命令返回-2。
  • 如果键存在但没有关联的过期时间,则命令返回-1。

我建议您确保执行getExpire时密钥正确且在redist中确实存在

本文链接:https://www.f2er.com/2667342.html

大家都在问