如何在Redis中判断密钥是否已设置过期时间?

21

由于 Redis 在复制时可能会出现 nan 的问题,不允许重置键的到期时间。我想知道是否有任何方法可以检查键是否设置为过期?

谢谢。

2个回答

43

使用TTL命令。如果设置了过期时间,它将返回键过期的剩余秒数;否则将返回-1。


根据@luiges90的建议,TTL命令链接已移至此处,http://redis.io/commands/ttl。 - iDev

-1

我认为在Redis中检查过期日期并没有太多意义。我建议您首先对其进行建模,以便无需检查过期日期。

如果您确实需要它,可以使用另一个键来存储过期日期,以便稍后通过常规GET/SET进行检索。

请注意,您还可以在客户端代码中手动检查EXPIRES,这可能是更好的解决方案。


我正在使用Redis来记录关于浏览量的统计数据(每天、每月、每年等)。我不需要前一天、前一个月等的统计数据,因此我想使用Redis EXPIRES来确保自动删除前一天的对象,以免手动清理数据库。 - Kirzilla
@Kirzilla,您能详细说明为什么需要重新检查/重置过期日期吗? - chakrit
你有谷歌聊天或ICQ吗?如果你有空的时间,联系你会很好...谢谢。 - Kirzilla
1
@Kirzilla 当然我有业余时间 :) 但没有 ICQ 帐户 :( 我认为你可以将这个问题发布到 Redis Google 组中以获得更好的答案 (http://groups.google.com/group/redis-db)。那里的人比我聪明多了 :) 我有 GMail 地址,但除了 Twitter 之外现在没有任何即时消息软件。 - chakrit
TTL命令的一个可能用途:检查数据是否已预加载到缓存中。我正在进行地址解析,因此我将邮政编码数据库预加载到Redis中,并使用特殊的预加载标记键。我可以在我的代码中检查该键是否存在(它将与其他数据一起过期),以便我不必每次都运行预加载。 - Andrew Burns

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接