def clear_date(date):
conn = getconn(date)
pattern = '*_{}*'.format(date)
def flush_all(r):
print 'clearing {} on {}'.format(r, date)
r.flushdb()
def clear_conn_lua(r):
script = '''
for _, k in ipairs(redis.call('keys', ARGV[1])) do
redis.call('del', k)
end
'''
r.eval(script, 0, pattern)
def clear_conn(r):
print 'clearing {} on {}'.format(r, date)
p = r.pipeline()
cursor = 0
while True:
cursor, keys = r.scan(cursor, match=pattern, count=100000)
print 'curosr {}, keys {}'.format(cursor, len(keys))
if len(keys):
p.delete(*keys)
if int(cursor) == 0:
break
p.execute()
tasks = []
for r in conn.conns:
t = threading.Thread(target=flush_all, args=(r,))
t.start()
tasks.append(t)
for t in tasks:
t.join()
评论列表
文章目录