这是我的 redis 设置的快照
Total Keys Keys with Expiry Keys without Expiry
60Lacs 20Lacs 40Lacs
有没有Redis提供的方法:
在未指定 TTL 的应用程序创建的任何 key 上自动设置 1 天的 TTL
删除所有没有 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/