Before:
redis 127.0.0.1:6379> DBSIZE
(integer) 1282306
After:
redis 127.0.0.1:6379> DBSIZE
(integer) 237694
import datetime | |
import redis | |
import pytz | |
from dateutil import parser | |
from itertools import product | |
r = redis.Redis() | |
last_month = ( | |
datetime.datetime.utcnow().replace(tzinfo=pytz.utc) - | |
datetime.timedelta(days=30) | |
) | |
def clean_redis(prefix='rq:job:'): | |
keys = ( | |
"".join(chars) for chars in product('0123456789abcdef', repeat=2) | |
) | |
for start in keys: | |
count = 0 | |
prefix_keys = r.keys('{0}{1}*'.format(prefix, start)) | |
for key in prefix_keys: | |
date = r.hget(key, 'created_at') | |
if date is None: | |
print(key) | |
continue | |
date = parser.parse(date) | |
if date < last_month: | |
r.delete(key) | |
count += 1 | |
print(start, count) | |
if __name__ == '__main__': | |
clean_redis() |