python 批量删除 redis 大量数据
#!/usr/bin/env python # Scan and delete keys in Redis. # Author: cdfive from redis import Redis import time def RedisScanAndDelete(host, port, password, db, cursor, pattern, count, batch_delete_size): start_time = time.time() client = Redis(host=host, port=port, password=password, db=db) counts, other_cursor_counts = 0, 0 delete_keys = [] while True: cursor, keys = client.scan(cursor, pattern, count) length = len(keys) if length > 0: index = 0 for key in keys: index += 1 counts += 1 print("[%s][%s]%s,cursor=%s" % ( int(time.time() - start_time), counts, key.decode("utf-8"), cursor)) delete_keys.append(key) if (len(delete_keys) >= batch_delete_size or index >= length) and len(delete_keys) > 0: client.delete(*delete_keys) delete_keys = [] else: other_cursor_counts += 1 print("[%s][other_curosr]other_cursor_counts=%s,cursor=%s" % ( int(time.time() - start_time), other_cursor_counts, cursor)) if cursor == 0: break client.close() print("[%s]counts=%s,cursor=%s,other_cursor_counts=%s" % (int(time.time() - start_time), counts, cursor, other_cursor_counts)) RedisScanAndDelete("localhost", 6379, "123456", 0, 0, "*xxx*", 1000, 100)
参考教程:https://blog.51cto.com/u_56701/6473475
如果觉得对您有帮助,麻烦您点一下推荐,谢谢!
好记忆不如烂笔头
好记忆不如烂笔头