允许redis中的密钥持续存在的时间量是否存在限制(上限/下限)?如果是这样,他们是什么?
答案 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 mill
或PEXPIRE 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