我在 Redis 缓存方面陷入了死胡同。我想在密钥启动时设置 TTL。键将通过 hSet($hash, $key, $data) 设置
expire($key, '3600')
似乎不起作用。有 hExpire() 方法吗?
说明:
Redis 仅支持 KEY 级别的过期。它不支持任何数据结构的内部元素的过期,更不用说哈希了。
答案:
hExpire
方法/命令。更新:
您可以使整个数据结构(也称为密钥)过期。
使密钥过期的命令之一是
EXPIRE key seconds
。
假设您使用的是 phpredis,您的方法调用可以是
setTimeout($hash, 3600)
。
您需要将 TTL 放在
$hash
本身上,因为您不能使哈希的各个键过期。
对于 2024 年阅读本文的任何人,正如之前的评论之一中提到的 Redis 在 hSet Keys 上设置 TTL ,评论中链接的拉取请求已被合并。 Redis 现在支持哈希字段级别的过期https://redis.io/docs/latest/commands/?name=hexp
你可以尝试TairHash,这是一个redis模块,类似于redis hash,但是你可以为字段设置expire和version:https://github.com/alibaba/TairHash