redis按正则获取keys

redis 的keys可以根据正则获取匹配的keys,例如查找某一类型的sql,如下面查找表名下的show类型的keys
 keys db:table:[a-zA-Z_/d]*:show:*


也可以根据查询结构删除:
redis-cli --raw keys "$PATTERN" | xargs redis-cli del


移动
redis-cli --raw keys "$PATTERN" | xargs -L1 -I{} redis-cli move {} 1


先删除db0,再将db1的全部数据移动到db0

$ select 0
$ redis-cli flushdb 
$ redis-cli --raw -n 1 keys "$PATTERN" | xargs -L1 -I{} redis-cli move {} 0


可以将这些command 写入shell script。
redis-delkeys.sh

#!/bin/sh
#
# Usage: ./redis-delkeys.sh [-h host] [-p port] [-n db] pattern
#
# Matches keys with the KEYS command matching pattern
#   and deletes them from the specified Redis DB.

set -e

HOST="localhost"
PORT="6379"
DB="0"
while getopts "h:p:n:" opt; do
    case $opt in
        h)  HOST=$OPTARG;;
        p)  PORT=$OPTARG;;
        n)  DB=$OPTARG;;
        \?) echo "invalid option: -$OPTARG" >&2; exit 1;;
    esac
done
shift $(( $OPTIND -1 ))
PATTERN="$@"
if [ -z "$PATTERN" ]; then
    echo "pattern required" >&2
    exit 2
fi

redis-cli -h $HOST -p $PORT -n $DB --raw keys $PATTERN |
    xargs redis-cli -h $HOST -p $PORT -n $DB del


redis-movekeys.sh

#!/bin/sh
#
# Usage: ./redis-movekeys.sh [-h host] [-p port] [-n src] [-m dest] pattern
#
# Move keys matching pattern from the src Redis database to the
# dest Redis database.

set -e

HOST="localhost"
PORT="6379"
SRCDB="0"
DESTDB="0"
while getopts "h:p:n:m:" opt; do
    case $opt in
        h)  HOST=$OPTARG;;
        p)  PORT=$OPTARG;;
        n)  SRCDB=$OPTARG;;
        m)  DESTDB=$OPTARG;;
        \?) echo "invalid option: -$OPTARG" >&2; exit 1;;
    esac
done
shift $(( $OPTIND -1 )) 
PATTERN="$@"
if [ -z "$PATTERN" ]; then
    echo "pattern required" >&2
    exit 2
fi

redis-cli -h "$HOST" -p "$PORT" -n "$SRCDB" --raw keys "$PATTERN" |
    xargs -I{} redis-cli -h "$HOST" -p "$PORT" -n "$SRCDB" move {} "$DESTDB"


参考:
https://coderwall.com/p/jw7uoa/quickly-move-and-delete-redis-keys-by-pattern
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值