redis 的keys可以根据正则获取匹配的keys,例如查找某一类型的sql,如下面查找表名下的show类型的keys
也可以根据查询结构删除:
移动
先删除db0,再将db1的全部数据移动到db0
可以将这些command 写入shell script。
redis-delkeys.sh
redis-movekeys.sh
参考:
https://coderwall.com/p/jw7uoa/quickly-move-and-delete-redis-keys-by-pattern
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