Redis缓存-获取初始超时设置

Redis缓存-获取初始超时设置,redis,timeout,Redis,Timeout,在Redis缓存中,是否可以检索在密钥上设置的原始超时?我知道有一种方法可以检索任何键的挂起时间,但我想要创建键时设置的原始值。否,Redis不存储键的原始TTL。理解需要这样做的用例会很有趣 但是,您可以使用排序集来跟踪初始TTL。其思想是,在每次调用EXPIRE后,在该集合上调用ZADD,成员是密钥的名称。分数应该是小数点,小数点前的部分是到期时间戳,小数部分是TTL(根据最大TTL用0填充) 要检索初始TTL,请使用键名调用集合上的ZSCORE,并提取小数点后的部分 注意,通过采用这种方法

在Redis缓存中,是否可以检索在密钥上设置的原始超时?我知道有一种方法可以检索任何键的挂起时间,但我想要创建键时设置的原始值。

否,Redis不存储键的原始TTL。理解需要这样做的用例会很有趣

但是,您可以使用排序集来跟踪初始TTL。其思想是,在每次调用
EXPIRE
后,在该集合上调用
ZADD
,成员是密钥的名称。分数应该是小数点,小数点前的部分是到期时间戳,小数部分是TTL(根据最大TTL用0填充)

要检索初始TTL,请使用键名调用集合上的
ZSCORE
,并提取小数点后的部分


注意,通过采用这种方法,您必须进行一些内务管理,即从集合中删除过期成员。为此,定期从-inf调用
ZREMBYSCORE
到当前时间戳。

我们希望实现Redis本机不支持的滑动过期。这是我们的用例。有没有更好的解决方案来实现滑动过期?明白。在这种情况下,因为这意味着不同的键可能具有不同的初始TTL,所以我想不出更好的解决方案。不过,我确实建议将逻辑(添加、更新和内务管理)包装在Lua中。