【问题标题】:Redis setting TTL on hSet KeysRedis 在 hSet Keys 上设置 TTL
【发布时间】:2018-10-08 11:10:04
【问题描述】:

我在使用 redis 缓存时陷入了死胡同。我想在启动密钥时设置一个 TTL。密钥将由 hSet($hash, $key, $data)

设置
expire($key, '3600')

似乎不起作用。有没有 hExpire() 方法?

【问题讨论】:

  • 简短回答:。长答案:不,你不能

标签: caching redis redis-cli


【解决方案1】:

说明:

Redis 仅在 KEY 级别支持过期。它不支持任何数据结构的内部元素过期,更不用说哈希了。

答案:

  1. 没有。 Redis 中没有 hExpire 方法/命令。
  2. 您正在尝试使哈希中的内部元素过期。这在 Redis 中是不可能的。

更新:

您可以使整个数据结构(也称为密钥)过期。

使密钥失效的命令之一是EXPIRE key seconds

假设你使用的是phpredis,你的方法调用可以是setTimeout($hash, 3600)

【讨论】:

  • 我可以为哈希设置过期时间或设置 TTL 吗? Tomasz 说我可以在哈希本身上设置 TTL
【解决方案2】:

您需要将 TTL 放在 $hash 本身上,因为您不能使散列的单个键过期。

【讨论】:

  • 那是什么方法?我该怎么做?
  • @Isengo 他的意思是使用redis.io/commands/expire 对密钥本身进行 TTL。您不能使哈希过期,但可以使每个密钥过期。
【解决方案3】:

你可以试试TairHash,这是一个redis模块,类似于redis hash,但是你可以为字段设置expire和version:https://github.com/alibaba/TairHash

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 2022-10-05
    • 2021-10-18
    相关资源
    最近更新 更多