【发布时间】:2017-04-10 03:15:38
【问题描述】:
我正在查看 redis 上的 tutorial 并遇到了一个没有意义的命令。从下面的代码中,我得到了一个-2 time-to-live 返回值,该值肯定仍然存在。我的代码不应该返回 -1 以表示永不过期吗?
教程说:
可以告诉 Redis,一个键应该只存在一定的时间长度。这是通过 EXPIRE 和 TTL 命令完成的。
SET resource:lock "Redis Demo" EXPIRE 资源:lock 120
这会导致 key resource:lock 在 120 秒内被删除。您可以使用 TTL 命令测试密钥将存在多长时间。它返回将被删除之前的秒数。
TTL 资源:锁 => 113 // 113 秒后 TTL资源:lock => -2
密钥 TTL 的 -2 表示密钥不存在(不再存在)。密钥的 TTL 为 -1 表示它永远不会过期。请注意,如果您设置一个键,它的 TTL 将被重置。
SET resource:lock "Redis Demo 1"
过期资源:lock 120
TTL 资源:锁 => 119
SET 资源:锁定“Redis Demo 2”
TTL资源:lock => -1
这是我在交互式终端中输入的代码。我的假设是第 3 行应该给我回-1,因为它永不过期。我从来没有设置过期时间,所以我不知道我为什么要返回 -2。
> SET loggedIn "True"
OK
> TTL logggedIn
(integer) -2
> GET loggedIn
"True"
【问题讨论】: