redis沒有提供批量刪除命令铣卡,借助linux的 xargs
命令實現(xiàn)批量刪除
key中不帶空格
./redis-cli -a admin keys "seer*"|xargs ./redis-cli -a admin del
# 刪除所有以 seer開頭的key链韭,數(shù)據(jù)庫密碼為 admin
如果key中帶有空格,比如mybatis二級緩存生成的key煮落,上述命令無法刪除敞峭。
咨詢了我們的運維大佬,提供了一個方案蝉仇。
key中帶空格
./redis-cli -a admin keys "seer*"|xargs -I {} ./redis-cli -a admin del "{}"
如果有興趣旋讹,可以自行搜索下xargs
的相關(guān)用法
key中帶\n
redis 以 \n 為結(jié)束符,所以key中帶 \n 的無法通過上述方法刪除轿衔,可以通過腳本實現(xiàn)
# !/usr/bin/env python
# -*- coding: UTF-8 -*-
import sys
import redis
__author__ = 'seer'
__date__ = '2018/8/15 10:34'
'''
批量刪除 redis key
'''
client = redis.StrictRedis(host='127.0.0.1', password='admin')
is_delete = sys.argv[1]
match = sys.argv[2]
for key in client.scan_iter(match=match):
print key
if is_delete.lower() == 'true':
client.delete(key)
print '刪除成功 %s' % key
batch_delete_redis_key.py true yuyanjia*
keys
命令會造成堵塞沉迹,改用scan