Redis批量删除Key或模糊删除Key

您所在的位置:网站首页 redis清理连接 Redis批量删除Key或模糊删除Key

Redis批量删除Key或模糊删除Key

2024-06-09 13:07| 来源: 网络整理| 查看: 265

批量删除指定Key删除指定的多个Key

执行命令前,您需要把待删除的Key列表写入至文件。

通过cat命令从指定文件中读取每一行作为Redis的Key,然后使用 redis-cli 连接到 Redis 服务器,并使用DEL命令删除这些Key。命令语法如下。

cat | xargs redis-cli -h -a DEL说明

Linux的xargs命令可以将参数列表分段传递给其他命令,以避免参数列表过长的问题,可以单独使用,也可以使用管道符、重定位符等与其他命令配合使用。

参数说明:

file:记录了待删除Key的文件路径。例如key.txt。

host:Redis的实例连接地址,更多信息请参见查看连接地址。

password:Redis实例密码,更多信息请参见Redis实例登录方式。

示例:

cat key.txt | xargs redis-cli -h r-bp127cu5tb*****.redis.rds.aliyuncs.com -a Test**** DEL模糊匹配删除Key方式一(推荐):通过SCAN和DEL命令模糊删除

通过循环逐步遍历并删除符合条件的Key。示例代码如下所示。

import redis import sys def main(argv): if len(argv) < 4: print("Usage: python scan_and_del.py host port password match") sys.exit(-1) host = argv[1] port = argv[2] password = argv[3] match = argv[4] print("host: %s, port: %s, password: %s, match: %s\n" % (host, port, password, match)) redis_cli = redis.StrictRedis(host=host, port=port, password=password) cursor = 0 rnd = 1 while rnd == 1 or cursor != 0: result = redis_cli.scan(cursor=cursor, match=match, count=1000) ret_cursor = result[0] ret_keys = result[1] num_keys = len(ret_keys) print("del %d keys in round %d, cursor: %d" % (num_keys, rnd, ret_cursor)) if 0 != num_keys: ret_del = redis_cli.delete(*ret_keys) print("ret_del: %d, ret_keys: %s" % (ret_del, ret_keys)) cursor = ret_cursor rnd += 1 print("") if __name__ == '__main__': main(sys.argv)

调用上述示例代码scan_and_del.py,调用时指定Redis实例的连接信息和Key的匹配模式,即可实现模糊匹配删除。

python scan_and_del.py ""

参数说明:

host:Redis的实例连接地址,更多信息请参见查看连接地址。

port:Redis实例的端口号。

password:Redis实例密码,更多信息请参见Redis实例登录方式。

key:某个数据库中符合指定要求的Key,例如"test*"标识以test为前缀的Key,如test1、test2、test3等。

关于通配符匹配的更多说明:

w?rld:匹配以w开头,以rl结尾,且长度为5个字符的字符串,例如world,warld和wxrld等。

w*rld:匹配以w开头,以rl结尾的任意字符串,例如wrld和woooorld。

w[ae]rld:匹配warld和werld,但是不匹配world等。

w[^e]rld:匹配world和warld等,但是不匹配werld。

w[a-b]rld:匹配warld和wbrld。

方式二:通过KEYS和DEL命令模糊删除警告

使用KEYS命令可能会导致CPU使用率高,请在业务低峰期操作。

在大型数据库中使用KEYS命令会影响数据库的性能,建议在数据较少时使用。

通过KEYS命令,使用通配符模糊匹配所有符合条件的Key,再通过DEL命令删除这些Key。

redis-cli -h -a KEYS "" | xargs redis-cli -h -a DEL

参数说明:

file:记录了待删除Key的文件路径。例如key.txt。

password:Redis实例密码,更多信息请参见Redis实例登录方式。

key:某个数据库中符合指定要求的Key,例如"test*"标识以test为前缀的Key,如test1、test2、test3等。

关于通配符匹配的更多说明:

w?rld:匹配以w开头,以rl结尾,且长度为5个字符的字符串,例如world,warld和wxrld等。

w*rld:匹配以w开头,以rl结尾的任意字符串,例如wrld和woooorld。

w[ae]rld:匹配warld和werld,但是不匹配world等。

w[^e]rld:匹配world和warld等,但是不匹配werld。

w[a-b]rld:匹配warld和wbrld。

示例:

redis-cli -h r-bp127cu5tb*****.redis.rds.aliyuncs.com -a Test**** KEYS "keys*" | xargs redis-cli -h r-bp127cu5tb*****.redis.rds.aliyuncs.com -a Test**** DEL


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3