【发布时间】:2018-03-03 04:10:54
【问题描述】:
这是我的 redis 设置的快照
Total Keys Keys with Expiry Keys without Expiry
60Lacs 20Lacs 40Lacs
有没有Redis提供的方法:
在未指定 TTL 的应用程序创建的任何密钥上自动设置 1 天的 TTL
删除所有没有 TTL 的现有密钥
【问题讨论】:
标签: redis
这是我的 redis 设置的快照
Total Keys Keys with Expiry Keys without Expiry
60Lacs 20Lacs 40Lacs
有没有Redis提供的方法:
在未指定 TTL 的应用程序创建的任何密钥上自动设置 1 天的 TTL
删除所有没有 TTL 的现有密钥
【问题讨论】:
标签: redis
至于问题一 - 不,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)
【讨论】: