1. 同一个key,更新值后必须重新设置过期时间
代码:
try { // 1. 设置客户端IP地址和端口 Jedis jedis = new Jedis("127.0.0.1", 6379); long unixTime = 1608173916000L; for (int i = 0; i < 20; i++) { System.out.println("----------------"); // 缓存数据 jedis.set("tt", "test1"); // 设置数据过期时间 long status = jedis.expireAt("tt", unixTime); System.out.println("过期时间设置结果:" + status); System.out.println("缓存的数据(设置过期过期):" + jedis.get("tt")); Thread.sleep(1000 * 5); jedis.set("tt", "test2"); // 同一个key不重新设置过期时间时,更新后过期时间失效 // status = jedis.expireAt("tt", unixTime); System.out.println("缓存的数据(没有重新设置过去时间):" + jedis.get("tt")); } // 3.释放资源 jedis.close(); } catch (InterruptedException e) { e.printStackTrace(); }
输出:
---------------- 过期时间设置结果:1 缓存的数据(设置过期过期):test1 缓存的数据(没有重新设置过去时间):test2 ---------------- 过期时间设置结果:1 缓存的数据(设置过期过期):test1 缓存的数据(没有重新设置过去时间):test2 ---------------- 过期时间设置结果:1 缓存的数据(设置过期过期):null 缓存的数据(没有重新设置过去时间):test2 ---------------- 过期时间设置结果:1 缓存的数据(设置过期过期):null
2. jedis.expireAt()方法时间戳的单位为秒
// 1. 设置客户端IP地址和端口 Jedis jedis = new Jedis("127.0.0.1", 6379); // 设置时间戳(单位为秒) jedis.expireAt("key", 200L); // 设置过期倒计时(单位为毫秒) jedis.expire("key", 1000 * 5); // 3.释放资源 jedis.close();