# coding:utf-8
import sys
from rediscluster import RedisCluster
def get_redis_nodes(redis_hosts):
host_split = redis_hosts.split(",")
redis_nodes = []
for host in host_split:
arr = host.split(":")
dict = {"host": arr[0], "port": arr[1]}
if(not redis_nodes.__contains__(dict)):
# if (dict not in redis_nodes):
redis_nodes.append(dict)
return redis_nodes
def connect(startup_nodes):
redis_cluster = RedisCluster(
startup_nodes=startup_nodes,
decode_responses=True,
# readonly_mode=True,
# Needed for Elasticache Clusters
skip_full_coverage_check=True)
return redis_cluster
def del_kes_batch(redis_nodes, redis_key):
redis_cluster_db = connect(redis_nodes)
data = redis_cluster_db.scan_iter(match=redis_key, count=50000)
with redis_cluster_db.pipeline(transaction=False) as pipe:
for key in data:
print(key)
pipe.delete(key)
try:
pipe.execute()
except Exception as e:
print(e)
if __name__ == '__main__':
redis_hosts = sys.argv[1]
redis_keys = sys.argv[2]
redis_nodes = get_redis_nodes(redis_hosts)
del_kes_batch(redis_nodes,redis_keys)