1.设置Key超时时间
Redis中可以使用EXPIRE
命令为key设置超时时间,也可以使用PEXPIRE
命令为key设置毫秒级别的超时时间。当key的超时时间到期后,key会被自动删除。
1. EXPIRE
命令
EXPIRE
命令用于为指定的key设置超时时间,单位为秒。以下是EXPIRE
命令的操作示例:
jedis操作示例:
import redis.clients.jedis.Jedis;
public class JedisExample {
public static void main(String[] args) {
// 连接Redis服务器
Jedis jedis = new Jedis("localhost", 6379);
// 为key设置超时时间
Long result = jedis.expire("foo", 60); // 60秒后过期
System.out.println(result);
// 关闭连接
jedis.close();
}
}
RedisTemplate操作示例:
import org.springframework.data.redis.core.RedisTemplate;
public class RedisTemplateExample {
private RedisTemplate<String, String> redisTemplate;
public RedisTemplateExample(RedisTemplate<String, String> redisTemplate) {
this.redisTemplate = redisTemplate;
}
public void expire(String key, long timeout) {
redisTemplate.expire(key, timeout, TimeUnit.SECONDS);
}
}
2. PEXPIRE
命令
PEXPIRE
命令用于为指定的key设置毫秒级别的超时时间。以下是PEXPIRE
命令的操作示例:
- jedis操作示例:
import redis.clients.jedis.Jedis;
public class JedisExample {
public static void main(String[] args) {
// 连接Redis服务器
Jedis jedis = new Jedis("localhost", 6379);
// 为key设置超时时间
Long result = jedis.pexpire("foo", 60000); // 60秒后过期
System.out.println(result);
// 关闭连接
jedis.close();
}
}
RedisTemplate操作示例:
import org.springframework.data.redis.core.RedisTemplate;
public class RedisTemplateExample {
private RedisTemplate<String, String> redisTemplate;
public RedisTemplateExample(RedisTemplate<String, String> redisTemplate) {
this.redisTemplate = redisTemplate;
}
public void pexpire(String key, long timeout) {
redisTemplate.expire(key, timeout, TimeUnit.MILLISECONDS);
}
}
3. 注意事项
在使用EXPIRE
和PEXPIRE
命令设置key的超时时间时需要注意以下几点:
- 超时时间是相对于当前时间的时间差,因此要注意时区的问题。
- 超时时间的设置是针对key的,每个key都需要单独设置超时时间。
- 超时时间设置的最小单位是秒或毫秒,因此要根据实际需求选择合适的单位。
- 如果对一个已经设置了超时时间的key再次设置超时时间,那么新的超时时间会覆盖旧的超时时间。
- 如果想要取消key的超时时间,可以使用
PERSIST
命令或EXPIRE
命令将超时时间设置为0。 EXPIRE
和PEXPIRE
命令的使用方法与其他Redis命令类似,可以通过jedis或RedisTemplate两种方式进行操作。