我会在快到期的时候刷新缓存。因此,我覆盖部分So缓存,并在我自己的redisCacheManager中管理缓存。
一切正常,但是当运行"get“方法时,意外的值将在我自己的中返回。当时,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 .And,我不明白这意味着什么。
发布于 2020-03-11 05:16:48
从红色信息系统的文件:
从Redis2.8开始的
返回值在发生错误时发生了更改:
如果键不存在,则返回-2。如果键存在,则返回-1。
我建议您确保密钥是正确的,并且在执行getExpire时确实存在于redist中。
https://stackoverflow.com/questions/60629048
复制相似问题