java中如何让redis在准确的时间过期?

YuJ*_*Jia 2 java redis

例如:我想让redis字符串“aKey”:“aValue”在未来某个时间过期(2018年8月17日00:00,现在是2018年8月16日12:00),这是我的解决方案:

long expireTime = Date.from(LocalDateTime.now().with(LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant()).getTime() - Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()).getTime();
redisTemplate.opsForValue().set("aKey","aValue",expireTime, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

我想要一个完美的解决方案。

YuJ*_*Jia 6

谢谢你的帮助,我明白了。Redis 有一个“EXPIREAT”命令,在 Java 中可以这样使用:

redisTemplate.opsForValue().set("aKey","aValue");
redisTemplate.expireAt("aKey",Date.from(LocalDateTime.now().with(LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant()));
Run Code Online (Sandbox Code Playgroud)