RedisTemplate getExpire() return Springcache 中的意外值
RedisTemplate getExpire() return unexpect value in Springcache
我想在快过期时刷新缓存。所以我重写了部分springcache,在自己的redisCacheManager中管理缓存。
一切正常,但是当运行 "get" 方法时,我自己的CustomizedRedisCache 中return 出现了意外的值。当时redis中的缓存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 总是 return -2 。我不明白那是什么意思。
来自 redis 文档:
Starting with Redis 2.8 the return value in case of error changed:
- The command returns -2 if the key does not exist.
- The command returns -1 if the key exists but has no associated expire.
我建议您在执行 getExpire
时确保密钥正确并且确实存在于 redist 中
我想在快过期时刷新缓存。所以我重写了部分springcache,在自己的redisCacheManager中管理缓存。
一切正常,但是当运行 "get" 方法时,我自己的CustomizedRedisCache 中return 出现了意外的值。当时redis中的缓存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 总是 return -2 。我不明白那是什么意思。
来自 redis 文档:
Starting with Redis 2.8 the return value in case of error changed:
- The command returns -2 if the key does not exist.
- The command returns -1 if the key exists but has no associated expire.
我建议您在执行 getExpire
时确保密钥正确并且确实存在于 redist 中