Java RedisTemplate 延长 Redis 键生存时间 (TTL) 的 API 接口
在 Java RedisTemplate 中,可以通过 opsForValue().getAndSet() 方法获取到 Redis 中的值,并通过 opsForValue().set() 方法设置新的值和 ttl 来延长键的生存时间。
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
// 设置 RedisTemplate 的配置信息
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.afterPropertiesSet();
// 获取值并延长 ttl
public void getValueAndExtendTtl(String key, long ttl) {
ValueOperations<String, Object> ops = redisTemplate.opsForValue();
Object value = ops.get(key);
if (value != null) {
ops.getAndSet(key, value, ttl, TimeUnit.SECONDS);
}
}
在上述代码中,首先创建了一个 RedisTemplate 对象,并设置了 Redis 连接工厂和序列化器等配置信息。然后,通过 opsForValue() 方法获取 ValueOperations 对象,该对象提供了操作 Redis 字符串值的方法。
在 getValueAndExtendTtl 方法中,首先使用 ops.get(key) 方法获取到 Redis 中的值。如果值存在,则通过 ops.getAndSet(key, value, ttl, TimeUnit.SECONDS) 方法来设置新的值和 ttl。这样就实现了在获取到值后,马上延长 ttl 的功能。
注意事项:
- 需要根据实际情况设置 Redis 的连接工厂和序列化器等配置信息。
ttl参数表示新的生存时间,单位为秒。ops.getAndSet(key, value, ttl, TimeUnit.SECONDS)方法会返回旧的值。如果不需要获取旧的值,可以使用ops.set(key, value, ttl, TimeUnit.SECONDS)方法。
原文地址: https://www.cveoy.top/t/topic/nbdG 著作权归作者所有。请勿转载和采集!