【问题标题】:Time of creation of key in redisredis中创建key的时间
【发布时间】: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

?

【问题讨论】:

  • 获取创建时间的内置命令对于调试非常有用...

标签: time redis


【解决方案1】:

Redis 不存储此信息。

您可以使用单独的密钥:

MULTI
SET foo "bar spam"
SET foo:time "13:30 20 Feb 2020"
EXEC

GET foo:time

【讨论】:

    【解决方案2】:

    对于需要计时器检测过期值而不删除值本身的用例,还有另一个类似的选项可以解决此问题:

    MULTI
    SET foo "bar"
    SET foo:alive 1 EX 30
    EXEC
    

    这里30 - 是所需的超时。然后,您可以通过以下方式确定 value 是否仍然“活跃”:

    EXISTS foo:alive
    

    【讨论】:

      【解决方案3】:

      如果您知道初始 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
      

      【讨论】:

      • 我认为这是将创建时间存储在 Redis 中的一个很好的解决方法,但是如果您不希望您的密钥过期,请确保将其设置为永远不会发生的很长的过期时间,像 30 年 (946080000)
      猜你喜欢
      • 2021-05-02
      • 2018-12-06
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 2017-02-05
      • 2015-07-22
      相关资源
      最近更新 更多