【发布时间】:2020-05-12 03:13:10
【问题描述】:
我遇到了奇怪的麻烦,我必须在给定毫秒后在redis 设置密钥过期。我做了以下几项工作后没有问题:
Client.expire(_id, expireSeconds)
现在过期了,redis 支持以秒为单位,现在我正在从事的整个项目使用 MilliSecond 库短 MS(https://www.npmjs.com/package/milliseconds)。
如何安全地将每毫秒转换为 redis 客户端可以支持的秒数?
注意:
...
expire/60000 <--- for getting minutes
...
假设如果客户端请求密钥在 15 秒内过期而不是分钟格式,它将像 0.14 那样 redis 客户端不支持 [将发生超出范围错误]。请任何人都可以帮我解决一些可以将毫秒转换为秒的冗余操作,以保持密钥必须过期的时间。
还是我错过了什么?
【问题讨论】:
-
为什么要转换成分钟数?
-
15 秒是 15000 毫秒。有什么问题?
-
问题是 MS 库...您将 15s 定义为 Ms('15s') 现在它返回 10000 现在它在 ms 现在 Redis.expire 认为我说的是 10000 秒而不是 15s
-
请注意我们可以使用 .set() 或 PX 标志...需要 .expire() 周围的东西
-
您可以使用redis.io/commands/pexpire以毫秒为单位进行设置
标签: javascript redis ioredis