• 批量迁移redis实例的key


    我们知道migrate 命令可以迁移redis的多个key,但是如果redis的key有非常多,那用起来就很不方便了。

    所以下面分享一个脚本来实现批量key的迁移,主要使用的命令为dumprestore

    脚本如下:

    #!/bin/bash
    redis-cli -h host1 -p 63791 -n 0 keys "*" | while read key
    do
    redis-cli -h host1 -p 63791 -n 0 --raw dump $key | perl -pe 'chomp if eof' | redis-cli -h host2 -p 6379 -n 0 -x restore $key 0
    echo "migrate key $key"
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    脚本具体解析:

    • 使用redis-cli连接到host1服务器,n代表database,执行keys "*"命令获取所有键名。
    • 使用while read key循环读取每个键名。
    • 对于每个键名,使用redis-cli连接到host1服务器,执行dump命令将键值序列化输出。
    • 使用perl -pe 'chomp if eof’命令处理输出结果,去除换行符。
    • 使用redis-cli连接到host2服务器,执行restore命令将键值恢复到host2服务器,ttl=0代表永不过期。
    • 输出迁移的键名。

    测试:
    1、我在本地模拟了两个redis实例。ip都为127.0.0.1,端口一个是默认的6379,一个是63791
    并且分别set了不同的key

    127.0.0.1:63791> keys *
    1) "age"
    2) "like"
    3) "colour"
    
    • 1
    • 2
    • 3
    • 4
    127.0.0.1:6379> keys *
    1) "student"
    
    • 1
    • 2

    2、使用脚本批量将63791实例的key迁移到6379实例

    在这里插入图片描述
    我的脚本如下:

    #!/bin/bash
    redis-cli -h 127.0.0.1 -p 63791 -n 0 keys "*" | while read key
    do
    redis-cli -h 127.0.0.1 -p 63791 -n 0 --raw dump $key | perl -pe 'chomp if eof' | redis-cli -h 127.0.0.1 -p 6379 -n 0 -x restore $key 0
    echo "migrate key $key"
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    执行sh migrate.sh启动脚本

    jiagangdeMacBook-Pro jag-ide-dev/redis » sh migrate.sh
    OK
    migrate key age
    OK
    migrate key like
    OK
    migrate key colour
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    查看6379实例
    可以看到63791实例上的数据已经被迁移了过来

    127.0.0.1:6379> keys *
    1) "like"
    2) "age"
    3) "student"
    4) "colour"
    127.0.0.1:6379> get colour
    "red"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    文章持续更新,可以关注下方公众号或者微信搜一搜「 最后一支迷迭香 」第一时间阅读,获取更完整的链路资料。

  • 相关阅读:
    AngularJS渲染完成事件捕获
    写给新用户-Mac软件指南篇:让你的Mac更好用
    map 和 set 的介绍
    Makefile入门(一)
    记录一次root过程
    2023最新UI酒桌喝酒游戏小程序源码 娱乐小程序源码 带流量主
    板凳---------unix网络编程卷1:第二章传输层:TCP、UDP 和 SCTP
    Apache Doris性能优化之Join Reorder和Doris Join调优原则
    【ASP.NET Core】设置 Web API 响应数据的格式——FormatFilter特性篇
    C语言学习:11、数组
  • 原文地址:https://blog.csdn.net/qq_38374397/article/details/134272378