6

我在redis缓存的死胡同。我想在启动密钥时设置 TTL。密钥将由 hSet($hash, $key, $data) 设置

expire($key, '3600')

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

4

3 回答 3

16

解释:

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

回答:

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

更新:

您可以使整个数据结构(又名密钥)过期。

使密钥过期的命令之一是EXPIRE key seconds.

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

于 2018-04-27T18:50:00.953 回答
0

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

于 2018-04-27T15:31:48.453 回答
-2

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

于 2021-07-13T07:59:17.260 回答