Redis无TTL

4
这是我的Redis设置快照。
Total Keys  Keys with Expiry    Keys without Expiry
60Lacs      20Lacs              40Lacs  

Redis提供了哪些方法:

  1. 自动为应用程序创建的未指定TTL的键设置1天的TTL

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

1个回答

2
就第一个问题而言 - 不,Redis没有提供全局TTL设置。TTL必须按键设置。您可以编写一些脚本来解决问题,但没有内置的功能。如果您担心内存使用情况,请查看配置并修改max-memory设置。有关更多信息,请参见此答案
就第二个问题而言 - 此Python脚本是如何迭代键并删除任何没有TTL的基本示例,您应该根据自己的需求进行构建。有关使其性能良好的重要信息,请参见此答案
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)

1
在生产环境上运行扫描?这将锁定数据库。 - user1682076
这就是为什么我添加了免责声明 - “您应该根据自己的需求进行构建。有关如何使其性能良好的重要信息可以在此答案中找到。” - Tague Griffith
1
实际上,扫描在生产环境中是可以的:https://redis.io/commands/scan。“由于这些命令允许增量迭代,每次调用只返回少量元素,因此它们可以用于生产环境”。 - kbosak

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