生產上由於業務設計原因,有一些500M的Hash Key,現在已經沒有用了,需要刪除,如果直接刪除會造成Redis的卡頓影響線上正常的業務。
那么處理有兩個方案:
-
在一個夜深人靜的時刻,流量低點進行操作(運維真是苦逼啊!)
-
寫個腳本,把Hash里面的內容一條一條刪除(Python大法好啊!)
Python腳本:
於是變有了這個腳本,很Low,很實用:
# -*- coding: UTF-8 -*- ''' python redis_hash_del.py HASH_KEY_NAME ''' # Import python libs import sys import redis # Args Input filter if len(sys.argv) <= 1: print "python sys.argv[0] HASH_KEY_NAME" sys.exit() else: hashkey = sys.argv[1] # redis_hash_del online def 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
參考文章:http://blog.51cto.com/unixhot/1742432
