没有 TTL 的 Redis

标签 redis

这是我的 redis 设置的快照

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

有没有Redis提供的方法:

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

  2. 删除所有没有 TTL 的现有 key

最佳答案

就问题一而言 - 不,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)

关于没有 TTL 的 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46350166/

相关文章:

redis - capistrano成功启动redis-server,但登录时它没有运行

ruby - resque redis 套接字超时

javascript - Vertex JS 和 Redis Sentinel 支持

javascript - IOREDIS - 尝试从 Redis 迁移到 KeyDB 时出错

flask - 如何让 flask 将生成器传递给 celery 等任务

database - 在redis中存储一个二维数组

ruby-on-rails - 在 Rails 线程中访问变量

去-redis : TTL returns a negative duration when the key does not exist

redis - 使用 Redis 副本为读取请求提供服务时可能存在的问题。

redis - Capistrano Resque 与一名生产 worker