在特定时间而不是持续时间过期redis缓存密钥

Mru*_*ker 1 redis node.js

我的代码如下所示:

client.set(name, data, 'EX', 23 * 60 * 60, (err, reply) => {

        });
Run Code Online (Sandbox Code Playgroud)

它的作用是,它存储了23个小时的键值.但是有什么方法可以让钥匙在晚上11:59到期时到期吗?

Ita*_*ber 5

尽管接受了答案,但你可以使用EXPIREAT它.但是,由于SET不支持将其作为参数,因此您需要在代码中进行两次调用.

  • @Imaskar我将详细解释评论:1.Redis有一个内置的命令来完成这项工作,而且不需要自己做数学.你的答案也很好,但它依赖于时间同步.所有客户端都应该与服务器具有一致的时钟.否则,您可能会设置不正确的过期时间.3.如果您确实关心另一个额外的调用,并且需要将操作设置为原子操作,则可以使用Lua脚本来提高性能. (3认同)