`
flex_莫冲
  • 浏览: 1095676 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

    redis 用scan指令 代替keys指令(详解)

    Redis中的`SCAN`命令是为了解决`KEYS`命令在大数据量下可能导致服务器阻塞的问题而设计的。`KEYS`命令一次性返回所有匹配的键,如果数据库中键的数量非常大,这将消耗大量的计算资源,从而影响Redis服务器的性能。`...

    Redis Desktop Manager

    1. **数据浏览与编辑**:Redis Desktop Manager允许用户直接在界面上查看Redis服务器中的键(keys)及其对应的值(values)。它可以显示不同类型的数据,如字符串、哈希、列表、集合和有序集合,并支持直接编辑和...

    python中redis查看剩余过期时间及用正则通配符批量删除key的方法

    虽然Redis本身不直接支持正则表达式的匹配,但你可以先使用`keys`函数找到匹配的键,然后再调用`delete`函数删除它们。例如,以下代码会删除所有以'/vender*'开头的键: ```python keys_to_delete = r.keys('/...

    使用PHP导出Redis数据到另一个Redis中的代码

    1. 使用`keys('*')`获取源Redis数据库中的所有键。 2. 对于每一个键,根据其类型(字符串、列表、哈希、有序集合)使用`switch`语句选择合适的迁移函数。 3. 对于字符串类型的数据,使用`get`方法获取值并使用目标...

    聊聊高并发高可用那些事(Kafka、Redis、MySQL)

    12. **相同前缀Key查找**:利用`KEYS`或正则表达式匹配。 13. **内存优化**:大量删除Key后,内存可能不会立即释放,需要`FLUSHALL`或`FLUSHDB`。 14. **三主三从集群部署**:为了提高可用性和容错性,部署多台主...

    redis.docx

    `KEYS`命令用于查找符合正则表达式的键,`EXISTS`检查键是否存在,`TYPE`返回键的类型,`TTL`查看键的过期时间,`EXPIRE`设置键的过期时间。 ### 总结 Redis作为一款高效的Key-Value存储系统,不仅提供丰富的数据...

    REDIS常用命令操作(带截屏)

    - 当需要查找Redis数据库中符合特定模式的所有键时,可以使用`KEYS`命令。 **参数说明**: - `KEYS pattern` - `pattern`:用于匹配键的正则表达式。支持的标准正则表达式包括: - `*`:匹配任意数量的字符 - `?...

    php实现redis数据库指定库号迁移的方法

    - 使用`keys`方法获取源Redis数据库中的所有键,然后通过`type`方法确定每个键的数据类型。 - 根据不同的数据类型,采用不同的迁移策略。这一点通过`switch`语句实现。 - 为了保证操作的效率,在迁移过程中,使用`...

    python redis 批量设置过期key过程解析

    同时,还可以结合其他 Redis 命令,如 `keys` 或正则表达式匹配,来筛选特定类型的键进行处理。 总结起来,Python 中使用 Redis 库进行批量设置过期时间的关键在于利用 `scan_iter` 迭代遍历键,并通过 `ttl` 和 `...

    redis-ex-cli

    redis-ex-cli Redix-ex-cli是一个实用程序命令,可通过命令行界面操作Redis数据库的多个键。 您可以使用正则表达式提取键,... localhost >> keys *快速范例$ > redis-ex-cli(disconnect) >> server localhostlocalhost

    程序员文摘第25期-精选最有价值的文章

    4. **Python正则表达式**:Python的`re`模块提供了正则表达式的支持,`re.M`是正则表达式的修饰符,用于多行匹配模式,使得`^`和`$`能匹配每一行的开始和结束。 5. **SpringCache与Redis**:SpringCache是Spring...

    完整的php面试题大全(基础/高级)

    - 遍历数组:foreach循环,以及array_keys(), array_values()获取键或值。 4. **文件与文件系统**: - 文件操作:fopen(), fread(), fwrite(), fclose()等用于读写文件。 - 目录操作:mkdir(), rmdir(), opendir...

    javase相关知识点

    2. 遍历对象键值对:for...in循环,或Object.keys获取所有key后再遍历。 3. 闭包:创建私有变量,封装作用域,实现异步控制,节省内存。 4. 邮箱正则表达式:/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/...

    Python-sonic搜索后端的异步python客户端

    3. **数据查询**:提供多种查询方式,如全词匹配、前缀匹配、正则表达式匹配等,且返回结果可按需排序。 4. **数据删除**:异步删除指定键或范围内的键值对。 5. **数据更新**:可以异步更新已存在的键值对。 6. **...

    php 给文章指定关键词加链接

    5. **性能优化**:对于大量文章的处理,为了提高效率,可以考虑使用缓存技术,如Memcached或Redis,将处理好的文章内容存储起来,减少对数据库的访问。 6. **安全考虑**:在处理用户输入时,一定要注意防止XSS(跨...

Global site tag (gtag.js) - Google Analytics