生产上由于业务设计原因,有一些500M的Hash Key,现在已经没有用了,需要删除,如果直接删除会造成Redis的卡顿影响线上正常的业务。那么处理有两个方案:
在一个夜深人静的时刻,流量低点进行操作(运维真是苦逼啊!)
写个脚本,把Hash里面的内容一条一条删除(Python大法好啊!)
Python脚本: 于是变有了这个脚本,很Low,很实用:
# -*- coding: UTF-8 -*-''' python redis_hash_del.py HASH_KEY_NAME'''# Import python libsimport sysimport redis# Args Input filterif len(sys.argv) <= 1: print "python sys.argv[0] HASH_KEY_NAME" sys.exit()else: hashkey = sys.argv[1]# redis_hash_del onlinedef redis_hash_del(hashkey): ''' delete redis hash key ''' r = redis.Redis(host='192.168.0.118',port=6379,db=0) if r.exists(hashkey): hashkey_all = r.hkeys(hashkey) for i in range(len(hashkey_all)): r.hdel(hashkey, hashkey_all[i]) print i else: print "KEY NOT EXISTS"if __name__ == "__main__": redis_hash_del(hashkey)[/i]使用方法: 手动修改脚本里面的IP地址和端口,然后:
python redis_hash_del.py HASH_KEY_NAME