美文网首页
redis批量删除key,key包含空格,\n

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

作者: 不敢预言的预言家 | 来源:发表于2018-05-15 11:21 被阅读0次

    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

          本文链接:https://www.haomeiwen.com/subject/wwsedftx.html