Dav*_*ert 10
你现在使用过期吗?如果是这样,如果没有设置TTL,你可以循环遍历所有键,然后添加一个.
Python示例:
for key in redis.keys('*'):
if redis.ttl(key) == -1:
redis.expire(key, 60 * 60 * 24 * 7)
# This would clear them out in a week
Run Code Online (Sandbox Code Playgroud)
编辑 正如@kouton所指出的,在生产中使用扫描键,请参阅以下内容的讨论:在Redis中SCAN与KEYS的性能
有点晚了,但请查看OBJECT命令.在那里你会发现物体空闲时间(10秒分辨率).它用于调试目的,但仍然可以为您的需要提供一个很好的解决方法.
参考文献:http://redis.io/commands/object
使用对象空闲时间,您可以删除三个月以来未使用过的所有密钥。这不完全是您的要求。如果您在6个月前创建了密钥,但是每天都会访问该密钥,则更新空闲时间,并且此脚本不会删除它。我希望该脚本可以帮助您:
#!/usr/bin/env python
import redis
r = redis.StrictRedis(host='localhost', port=6379, db=0)
for key in r.scan_iter("*"):
idle = r.object("idletime", key)
# idle time is in seconds. This is 90days
if idle > 7776000:
r.delete(key)
Run Code Online (Sandbox Code Playgroud)