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
分享到:
相关推荐
Redis中的`SCAN`命令是为了解决`KEYS`命令在大数据量下可能导致服务器阻塞的问题而设计的。`KEYS`命令一次性返回所有匹配的键,如果数据库中键的数量非常大,这将消耗大量的计算资源,从而影响Redis服务器的性能。`...
1. **数据浏览与编辑**:Redis Desktop Manager允许用户直接在界面上查看Redis服务器中的键(keys)及其对应的值(values)。它可以显示不同类型的数据,如字符串、哈希、列表、集合和有序集合,并支持直接编辑和...
虽然Redis本身不直接支持正则表达式的匹配,但你可以先使用`keys`函数找到匹配的键,然后再调用`delete`函数删除它们。例如,以下代码会删除所有以'/vender*'开头的键: ```python keys_to_delete = r.keys('/...
1. 使用`keys('*')`获取源Redis数据库中的所有键。 2. 对于每一个键,根据其类型(字符串、列表、哈希、有序集合)使用`switch`语句选择合适的迁移函数。 3. 对于字符串类型的数据,使用`get`方法获取值并使用目标...
12. **相同前缀Key查找**:利用`KEYS`或正则表达式匹配。 13. **内存优化**:大量删除Key后,内存可能不会立即释放,需要`FLUSHALL`或`FLUSHDB`。 14. **三主三从集群部署**:为了提高可用性和容错性,部署多台主...
`KEYS`命令用于查找符合正则表达式的键,`EXISTS`检查键是否存在,`TYPE`返回键的类型,`TTL`查看键的过期时间,`EXPIRE`设置键的过期时间。 ### 总结 Redis作为一款高效的Key-Value存储系统,不仅提供丰富的数据...
- 当需要查找Redis数据库中符合特定模式的所有键时,可以使用`KEYS`命令。 **参数说明**: - `KEYS pattern` - `pattern`:用于匹配键的正则表达式。支持的标准正则表达式包括: - `*`:匹配任意数量的字符 - `?...
- 使用`keys`方法获取源Redis数据库中的所有键,然后通过`type`方法确定每个键的数据类型。 - 根据不同的数据类型,采用不同的迁移策略。这一点通过`switch`语句实现。 - 为了保证操作的效率,在迁移过程中,使用`...
同时,还可以结合其他 Redis 命令,如 `keys` 或正则表达式匹配,来筛选特定类型的键进行处理。 总结起来,Python 中使用 Redis 库进行批量设置过期时间的关键在于利用 `scan_iter` 迭代遍历键,并通过 `ttl` 和 `...
redis-ex-cli Redix-ex-cli是一个实用程序命令,可通过命令行界面操作Redis数据库的多个键。 您可以使用正则表达式提取键,... localhost >> keys *快速范例$ > redis-ex-cli(disconnect) >> server localhostlocalhost
4. **Python正则表达式**:Python的`re`模块提供了正则表达式的支持,`re.M`是正则表达式的修饰符,用于多行匹配模式,使得`^`和`$`能匹配每一行的开始和结束。 5. **SpringCache与Redis**:SpringCache是Spring...
- 遍历数组:foreach循环,以及array_keys(), array_values()获取键或值。 4. **文件与文件系统**: - 文件操作:fopen(), fread(), fwrite(), fclose()等用于读写文件。 - 目录操作:mkdir(), rmdir(), opendir...
2. 遍历对象键值对:for...in循环,或Object.keys获取所有key后再遍历。 3. 闭包:创建私有变量,封装作用域,实现异步控制,节省内存。 4. 邮箱正则表达式:/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/...
3. **数据查询**:提供多种查询方式,如全词匹配、前缀匹配、正则表达式匹配等,且返回结果可按需排序。 4. **数据删除**:异步删除指定键或范围内的键值对。 5. **数据更新**:可以异步更新已存在的键值对。 6. **...
5. **性能优化**:对于大量文章的处理,为了提高效率,可以考虑使用缓存技术,如Memcached或Redis,将处理好的文章内容存储起来,减少对数据库的访问。 6. **安全考虑**:在处理用户输入时,一定要注意防止XSS(跨...