在java中如何使redis在准确的时间过期?
示例:我想让redis字符串“aKey”:“aValue”在未来某个时间过期(2018.08.17 00:00,现在是2018.08.16 12:00), 这是我的解决方案:在java中如何使redis在准确的时间过期?,java,redis,Java,Redis,示例:我想让redis字符串“aKey”:“aValue”在未来某个时间过期(2018.08.17 00:00,现在是2018.08.16 12:00), 这是我的解决方案: long expireTime = Date.from(LocalDateTime.now().with(LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant()).getTime() - Date.from(LocalDateTime.now().atZone(Z
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);
我想要一个完美的解决方案。谢谢你的帮助,我找到了;redis有“EXPIREAT”命令; 我可以使用以下代码替换我的代码: redisTemplate.opsForValue().set(“aKey”、“aValue”);
redisTemplate.expireAt(“aKey”,Date.from(LocalDateTime.now().with(LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant()) 完美的解决方案你的解决方案有什么问题?我认为这不是最好的解决方法;为了给消息添加TTL,您需要一些逻辑组件。第一个是当前时间,第二个是您希望它过期的时间,这是您得到的。我唯一的建议是将该逻辑移到一个适当命名的方法(
getexpire
)中。检查