【问题标题】:How to Safely set Expire in Redis Client?如何在 Redis 客户端中安全地设置过期时间?
【发布时间】: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


【解决方案1】:

使用 PEXPIRE 而不是 EXPIRE。此命令的工作方式与 EXPIRE 完全相同,只是您可以配置密钥的生存时间(以 毫秒

为单位)

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2018-11-23
    • 2014-06-08
    • 1970-01-01
    • 2011-06-25
    • 2019-05-24
    • 2015-11-29
    • 2016-05-15
    相关资源
    最近更新 更多