【发布时间】:2018-09-23 22:01:31
【问题描述】:
假设我在 13:30 20 Feb 2020 的 redis 中执行此操作,
> set foo "bar spam"
OK
我想获得foo 的创建时间。有没有类似的东西
> gettime foo
13:30 20 Feb 2020
?
【问题讨论】:
-
获取创建时间的内置命令对于调试非常有用...
假设我在 13:30 20 Feb 2020 的 redis 中执行此操作,
> set foo "bar spam"
OK
我想获得foo 的创建时间。有没有类似的东西
> gettime foo
13:30 20 Feb 2020
?
【问题讨论】:
Redis 不存储此信息。
您可以使用单独的密钥:
MULTI
SET foo "bar spam"
SET foo:time "13:30 20 Feb 2020"
EXEC
GET foo:time
【讨论】:
对于需要计时器检测过期值而不删除值本身的用例,还有另一个类似的选项可以解决此问题:
MULTI
SET foo "bar"
SET foo:alive 1 EX 30
EXEC
这里30 - 是所需的超时。然后,您可以通过以下方式确定 value 是否仍然“活跃”:
EXISTS foo:alive
【讨论】:
如果您知道初始 TTL,我认为这是可能的;
你可以这样做:
$init = 60; //initial time
$ttl = $redis->ttl("key"); //current ttl
$diff = $init - $ttl; //difference is the time passed after key was created
$creation = time() - $diff; //this is creation time in seconds since unix epoch
【讨论】: