1

如果在初始过期时间之前访问记录,我需要重置过期时间。我正在使用 Spring data redis API 将 Redis 用作缓存。我正在使用 RediscacheManager 的 setDefaultExpiration(5000) 来设置默认过期时间。找不到有关重置到期时间的任何解决方案或文档。任何指导表示赞赏。

还有,想知道为什么这不能成为 Redis Cache 的一个自然特性,毕竟它应该从缓存中获取最常用的记录。

4

1 回答 1

0

编写此方法并从适当的位置调用。对我来说就像一个魅力。

public void resetExpire(String keyPattern) {
        LOG.debug("Getting Multiple keys from cache with pattern:  " + keyPattern);
        Set<String> keylist = redisTemplate.keys(keyPattern);
        redisTemplate.executePipelined(new RedisCallback<Object>() {
            public Object doInRedis(RedisConnection connection) throws DataAccessException {
                keylist.forEach(key->
                redisTemplate.expire(key, 5000, TimeUnit.SECONDS));
                return null;
            }
        });
    }
于 2018-03-20T20:49:49.320 回答