redis密钥到期时间的上限和下限

时间:2017-06-14 05:54:58

标签: redis stackexchange.redis

允许redis中的密钥持续存在的时间量是否存在限制(上限/下限)?如果是这样,他们是什么?

3 个答案:

答案 0 :(得分:1)

遇到问题ReplyError: ERR value is not an integer or out of range,并且对最大TTL有相同的问题,因此,我发现最大值(!以秒为单位)为2 147 483 647。 您可以找到here

的更详细的答案

答案 1 :(得分:0)

到期精度为毫秒(SET KEY VALUE PX millPEXPIRE mill)。因此,最小到期时间是1毫秒。

最大到期时间是无限的,即如果你没有设置任何到期时间,密钥将永不过期。

答案 2 :(得分:0)

有4个命令可以使Redis密钥过期:

  
      
  • EXPIRE (以秒为单位的时间)
  •   
     

设置密钥超时。超时过期后,密钥将   自动删除。

     

示例:

redis> SET mykey "Hello"
"OK"
redis> EXPIRE mykey 10
(integer) 1
redis> TTL mykey
(integer) 10
redis> SET mykey "Hello World"
"OK"
redis> TTL mykey
(integer) -1
redis>
     
      
  • EXPIREAT (以Unix时间戳传递的时间)
  •   
     

EXPIREAT与EXPIRE具有相同的效果和语义,但不是   指定代表TTL的秒数(生存时间),   它需要一个绝对的Unix时间戳(1970年1月1日以来的秒数)。一个   过去的时间戳会立即删除密钥。

     

示例:

redis> SET mykey "Hello"
"OK"
redis> EXISTS mykey
(integer) 1
redis> EXPIREAT mykey 1293840000
(integer) 1
redis> EXISTS mykey
(integer) 0
     
      
  • PEXPIRE (以MiliSeconds传递的时间)
  •   
     

此命令与EXPIRE完全相同,但密钥的生存时间以毫秒而非秒为单位指定。

     

示例:

redis> SET mykey "Hello"
"OK"
redis> PEXPIRE mykey 1500
(integer) 1
redis> TTL mykey
(integer) 1
redis> PTTL mykey
(integer) 1498
     
      
  • PEXPIREAT (以MiliSeconds TimeStamp传递的时间)
  •   
     

PEXPIREAT与EXPIREAT具有相同的效果和语义,但密钥到期的Unix时间以毫秒而不是秒来指定。

redis> SET mykey "Hello"
"OK"
redis> PEXPIREAT mykey 1555555555005
(integer) 1
redis> TTL mykey
(integer) 58130168
redis> PTTL mykey
(integer) 58130167824