【问题标题】:How to set expire timeout for redis set key only for the first key save?如何为 redis set key 设置过期超时仅用于第一个 key 保存?
【发布时间】:2018-06-06 07:57:02
【问题描述】:

我有需要在给定键下将值保存到 redis SET 结构的情况,所以我在循环中使用我的代码中的命令

    SADD key value
    EXPIRE KEY 100

但是,我只想在第一次保存集合key 时设置过期时间。 是否可以仅在第一次设置密钥创建时设置过期时间? 还应该注意的是,我可以使用 EXISTS key 调用 redis 来检查密钥是否存在并取决于设置的过期时间 - 但这个操作不是原子的。

【问题讨论】:

  • 您可以将逻辑包装到Lua script 中以确保它以原子方式运行。

标签: redis


【解决方案1】:

回答这个问题 - 不,没有这样的命令。

正如您所指出的,这可以通过 EXISTS 解决。要解决原子性(并节省网络)要求,您可以使用 Lua 脚本(请参阅EVAL)。

【讨论】:

    【解决方案2】:

    Redis 7.0 有一个新选项“NX -- 仅在密钥没有过期时设置过期”。所以,你可以用EXPIRE KEY 100 NX解决这个问题。

    但是,如果您拨打EXPIRE KEY 100 1 次或者比如说5 次,这并不重要。密钥将在 100 秒后过期,因此检查 EXISTS key 也是一种选择。

    【讨论】:

      猜你喜欢
      • 2018-12-06
      • 2021-10-18
      • 2013-01-10
      • 2014-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      相关资源
      最近更新 更多