redis沒(méi)有提供批量刪除命令,借助linux的 xargs 命令實(shí)現(xiàn)批量刪除
key中不帶空格
./redis-cli -a admin keys "seer*"|xargs ./redis-cli -a admin del
# 刪除所有以 seer開(kāi)頭的key,數(shù)據(jù)庫(kù)密碼為 admin
如果key中帶有空格,比如mybatis二級(jí)緩存生成的key,上述命令無(wú)法刪除。
咨詢了我們的運(yùn)維大佬,提供了一個(gè)方案。
key中帶空格
./redis-cli -a admin keys "seer*"|xargs -I {} ./redis-cli -a admin del "{}"
如果有興趣,可以自行搜索下xargs的相關(guān)用法
key中帶\n
redis 以 \n 為結(jié)束符,所以key中帶 \n 的無(wú)法通過(guò)上述方法刪除,可以通過(guò)腳本實(shí)現(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命令會(huì)造成堵塞,改用scan