【问题标题】:How to know if key set to be expired or not in Redis?如何知道 Redis 中的密钥集是否过期?
【发布时间】:2011-02-22 17:15:42
【问题描述】:

至于 Redis 不允许将过期日期重置为密钥(因为具有复制功能的 nans),我想知道是否有任何方法可以检查密钥设置是否过期?

谢谢

【问题讨论】:

    标签: redis


    【解决方案1】:

    使用TTL command。如果设置了过期时间,则返回密钥过期前的秒数;否则返回 -1。

    【讨论】:

    【解决方案2】:

    不过,我认为在 Redis 中检查过期日期没有多大意义。我想首先建议您对其进行建模,这样您就不需要检查到期日期。

    如果你真的需要它,你可以使用另一个密钥来存储过期日期,以便以后通过普通的 GET/SET 检索。

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

    【讨论】:

    • 我正在使用 Redis 编写有关视图的统计信息(每天、每月、每年等)。我不需要前一天、前一个月等的统计信息,所以我想使用 Redis EXPIRES 来确保自动删除前一个日期对象,我不必手动清理数据库。
    • @Kirzilla 您能否详细说明为什么需要重新检查/重新设置过期日期?
    • 您有 Google Talk 或 ICQ 吗?如果您有空闲时间,很高兴与您联系...谢谢。
    • @Kirzilla 我有空闲时间,当然 :) 但不是 ICQ 帐户 :( 我认为通过将其发布到 Redis Google 群组 (groups.google.com/group/redis-db),您可能会得到更好的答案。那里的人有wayyy 比我聪明 :) 我有 GMail 地址,但除了 twitter,我现在没有任何 IM 软件。
    • TTL 命令的一个可能用途:检查数据是否已预加载到缓存中。我正在做地址解析,所以我将一个邮政编码数据库预加载到 redis + 一个特殊的预加载标记键中。如果该密钥存在,我可以检查我的代码(并且它将与其余数据一起过期),因此我不会每次都运行预加载。
    猜你喜欢
    • 2020-04-19
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 2015-09-01
    • 2020-09-26
    相关资源
    最近更新 更多