【问题标题】:Redis With No TTL没有 TTL 的 Redis
【发布时间】:2018-03-03 04:10:54
【问题描述】:

这是我的 redis 设置的快照

Total Keys  Keys with Expiry    Keys without Expiry
60Lacs      20Lacs              40Lacs  

有没有Redis提供的方法:

  1. 在未指定 TTL 的应用程序创建的任何密钥上自动设置 1 天的 TTL

  2. 删除所有没有 TTL 的现有密钥

【问题讨论】:

    标签: redis


    【解决方案1】:

    至于问题一 - 不,Redis 不提供全局 TTL 设置。 TTL 必须基于每个密钥进行设置。有一些方法可以编写解决方案,但没有内置任何内容。如果您担心内存使用情况,请查看您的配置并修改最大内存设置。请参阅此answer 了解更多信息。

    至于问题二 - Python 中的这个脚本是一个基本示例,说明如何在没有 TTL 的情况下迭代键并删除任何内容,您应该根据自己的需要构建它。可以在this answer 中找到有关使此高性能的重要信息。

    import redis
    r = redis.StrictRedis(host='localhost', port=6379)
    
    for key in r.scan_iter("*"):
        ttl = r.ttl(key)
        if ttl == -1:
            r.delete(key)
    

    【讨论】:

    • 对生产运行扫描?它将锁定数据库
    • 这就是我添加免责声明的原因 - “您应该根据自己的需要构建它。有关提高此性能的重要信息可以在此答案中找到。”
    • 实际上扫描可以用于生产:redis.io/commands/scan。 “由于这些命令允许增量迭代,每次调用只返回少量元素,它们可以在生产中使用”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多