redis没有提供批量删除命令,借助linux的 xargs
命令实现批量删除
key中不带空格
./redis-cli -a admin keys "seer*"|xargs ./redis-cli -a admin del
# 删除所有以 seer开头的key,数据库密码为 admin
如果key中带有空格,比如mybatis二级缓存生成的key,上述命令无法删除。
咨询了我们的运维大佬,提供了一个方案。
key中带空格
./redis-cli -a admin keys "seer*"|xargs -I {} ./redis-cli -a admin del "{}"
如果有兴趣,可以自行搜索下xargs
的相关用法
key中带\n
redis 以 \n 为结束符,所以key中带 \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