【发布时间】:2018-10-08 11:10:04
【问题描述】:
我在使用 redis 缓存时陷入了死胡同。我想在启动密钥时设置一个 TTL。密钥将由 hSet($hash, $key, $data)
设置expire($key, '3600')
似乎不起作用。有没有 hExpire() 方法?
【问题讨论】:
-
简短回答:否。长答案:不,你不能。
我在使用 redis 缓存时陷入了死胡同。我想在启动密钥时设置一个 TTL。密钥将由 hSet($hash, $key, $data)
设置expire($key, '3600')
似乎不起作用。有没有 hExpire() 方法?
【问题讨论】:
说明:
Redis 仅在 KEY 级别支持过期。它不支持任何数据结构的内部元素过期,更不用说哈希了。
答案:
hExpire 方法/命令。更新:
您可以使整个数据结构(也称为密钥)过期。
使密钥失效的命令之一是EXPIRE key seconds。
假设你使用的是phpredis,你的方法调用可以是setTimeout($hash, 3600)。
【讨论】:
您需要将 TTL 放在 $hash 本身上,因为您不能使散列的单个键过期。
【讨论】:
你可以试试TairHash,这是一个redis模块,类似于redis hash,但是你可以为字段设置expire和version:https://github.com/alibaba/TairHash
【讨论】: