redistemplate getexpire()在springcache中返回意外值

ccrfmcuu  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(1549)

我想在快到期时刷新缓存。所以我重写了springcache的一部分,并在我自己的rediscachemanager中管理缓存。
一切正常,但是当运行“get”方法时,意外的值​​在我自己的定制ediscache中返回。当时,redis中的cache key确实与“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。我不明白这是什么意思。

klr1opcd

klr1opcd1#

redis文档:
从redis 2.8开始,错误更改时的返回值:
如果键不存在,则命令返回-2。
如果密钥存在但没有关联的expire,则命令返回-1。
我建议您确保密钥是正确的,并且在 getExpire 已执行

相关问题