• 删除redis中指定key模式的数据的shell脚本


    有很多场景,我们都需要删除redis中某些具有相似特征的key,即使是线上环境也是。如果key数量很小容易处理,如果这些key很多很多,必须通过scan命令循环扫描一一删除,如果直接执行keys命令会堵死redis服务。下面这个脚本就是通过循环扫码key再删除,直至结束。

    redis-del-keys.sh

    #!/bin/bash
    ##redis主机IP
    host=$1
    ##redis端口
    port=$2
    ##key模式
    pattern=$3
    ##游标
    cursor=0
    ##退出信号
    signal=0
    
    ##循环获取key并删除
    while [ $signal -ne 1 ]
        do
            echo "cursor:${cursor}"
            sleep 2
            ##将redis scan得到的结果赋值到变量
            re=$(redis-cli -h $host -p $port -c  scan $cursor count 1000 match $pattern)
            ##以换行作为分隔符
            IFS=$'
    ' 
            #echo $re
            echo 'arr=>'
            ##转成数组
            arr=($re)
            ##打印数组长度
            echo 'len:'${#arr[@]}
            ##第一个元素是游标值
            cursor=${arr[0]}
            ##游标为0表示没有key了
            if [[ $cursor -eq 0 ]];then
                signal=1
            fi
            ##循环数组
        for key in ${arr[@]}
            do
                echo $key
                if [ $key != $cursor ];then
                    echo "key:"$key
                    ##删除key
                    redis-cli -h $host -p $port -c del $key >/dev/null  2>&1
                fi
        done
    done
    echo 'done'

    使用方式:

    ./redis-del-keys.sh localhost 6379 user:*

    表示删除本机6379端口的redis中user:开头的所以key。

  • 相关阅读:
    点击鼠标上下滚动
    点击小圆圈切换图片(基础)
    js取整数、取余数的方法
    几张图片滚动切换
    (转)iPhone +ipad尺寸规范(界面 & 图标)
    基础选择分类
    JDBC事务
    JDBC
    mysql
    网络编程三要素
  • 原文地址:https://www.cnblogs.com/yinliang/p/13632821.html
Copyright © 2020-2023  润新知