Redis设置hSet键的TTL

11

我在使用Redis缓存时遇到了瓶颈。我想在键的初始化时设置TTL。该键将通过hSet($hash, $key, $data)进行设置。

expire($key, '3600')

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

3
简短回答:不行。详细回答:不行,你做不到。 - thepirat000
3个回答

21

说明:

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

答案:

  1. 不支持。Redis 中没有 hExpire 方法/命令。
  2. 你正在尝试让一个哈希表中的内部元素过期,这在 Redis 中是不可能的。

更新:

你可以使整个数据结构(即键)过期。

其中一个过期键的命令是 EXPIRE key seconds

假设您正在使用 phpredis,则可以使用 setTimeout($hash, 3600) 方法调用。


我可以为哈希设置过期时间或TTL吗?Tomasz说我可以在哈希本身上设置TTL。 - Isengo

0

你需要将TTL放在$hash本身上,因为你无法过期哈希的单个键。


1
哪个方法是那个?我该怎么做? - Isengo
@Isengo 他的意思是使用 https://redis.io/commands/expire 上的键本身的 TTL。您无法使哈希过期,但可以使每个键过期。 - Bhoomtawath Plinsut
@sazzad 为什么 Redis 不支持 HSET 的 EX 参数,就像它对 SET 那样呢?这样做会限制我们必须再执行一次 EXPIRE 命令。 - bdeweer

-2
你可以尝试使用 TairHash,这是一个 Redis 模块,类似于 Redis 的哈希表,但你可以为字段设置过期时间和版本号: https://github.com/alibaba/TairHash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接