JedisCluster
中的 psetex
方法用于设置一个键值对,并同时设置该键的过期时间(以毫秒为单位)。与 setex
的区别在于 psetex
接受的过期时间是以毫秒为单位,而 setex
接受的是以秒为单位。
psetex 方法说明
-
方法签名:
public String psetex(String key, long milliseconds, String value);
-
参数:
key
: 需要设置的键。milliseconds
: 该键的过期时间,单位为毫秒。value
: 对应的值。
-
返回值:当设置成功时,返回字符串 "OK"。
使用示例
以下是一个使用 JedisCluster
调用 psetex
方法的示例代码:
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
import java.util.HashSet;
import java.util.Set;
public class JedisClusterExample {
public static void main(String[] args) {
// 配置 Redis 集群节点地址
Set<String> nodes = new HashSet<>();
nodes.add("127.0.0.1:7000");
nodes.add("127.0.0.1:7001");
nodes.add("127.0.0.1:7002");
// 创建 JedisPoolConfig,并配置连接池参数
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(128); // 最大连接数
config.setMaxIdle(64); // 最大空闲连接数
config.setMinIdle(16); // 最小空闲连接数
// 创建 JedisCluster 实例
JedisCluster jedisCluster = new JedisCluster(nodes, config);
// 使用 psetex 方法设置键值对及过期时间
String key = "exampleKey";
String value = "exampleValue";
long milliseconds = 60000; // 过期时间(毫秒)
// 调用 psetex 方法
String result = jedisCluster.psetex(key, milliseconds, value);
System.out.println("Psetex result: " + result); // 输出 "Psetex result: OK"
// 读取键的值
String retrievedValue = jedisCluster.get(key);
System.out.println("Retrieved value: " + retrievedValue); // 输出存储的值
// 等待过期(可用于测试,实际使用中不建议这样做)
try {
Thread.sleep(70000); // 等待 70 秒,超过过期时间
} catch (InterruptedException e) {
e.printStackTrace();
}
// 再次读取,检查是否过期
String expiredValue = jedisCluster.get(key);
System.out.println("Value after expiration: " + expiredValue); // 应输出 null
// 关闭 JedisCluster 实例
jedisCluster.close();
}
}
注意事项
-
过期时间单位:过期时间以毫秒为单位,设置时请注意单位转换。
-
键存在与否:键存在:调用
psetex
会覆盖原有值并重置过期时间。键不存在:调用psetex
会创建新键,并设置值和过期时间。 -
返回值:无论键是否存在,
psetex
方法始终返回 "OK",表示操作成功。