在Redis缓存中,是否可以检索在密钥上设置的原始TimeOut?我知道有一种方法可以检索任何键的待定TimeToLive,但我想要在创建密钥时设置的原始值。
答案 0 :(得分:0)
不,Redis不存储密钥的原始TTL。理解需要它的用例会很有趣。
但是,您可以使用排序集来跟踪初始TTL。我们的想法是,在每次调用EXPIRE
之后,在该集合上调用ZADD
,并将该成员作为密钥的名称。得分应为小数,小数点前的部分是到期时间戳,小数部分是TTL(根据最大TTL用0填充)。
要检索初始TTL,请使用密钥名称在集合上调用ZSCORE
,并在小数点后提取部分。
请注意,通过采用这种方法,您将不得不做一些内务处理,即从集合中删除过期的成员。为此,请定期从-inf调用ZREMBYSCORE
到当前时间戳。