如何有效刪除Redis中比較大的Hash Key


生產上由於業務設計原因,有一些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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM