redis批量删除key,key包含空格,\n

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

你可能感兴趣的:(redis批量删除key,key包含空格,\n)