前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis migrate 数据迁移工具

Redis migrate 数据迁移工具

作者头像
宜信技术学院
发布2020-11-03 15:46:36
1.4K0
发布2020-11-03 15:46:36
举报
文章被收录于专栏:宜信技术实践宜信技术实践

在工作中可能会遇到单点Redis向Redis集群迁移数据的问题,但又不能老麻烦运维来做。为了方便研发自己迁移数据,我这里写了一个简单的Redis迁移工具,希望对有需要的人有用。

本工具支持:
  • 单点Redis到单点Redis迁移
  • 单点Redis到Redis集群迁移
  • Redis集群到Redis集群迁移
  • Redis集群到单点Redis迁移

该工具已经编译成了多平台命令,直接从Github下载二进制文件执行就好了。 项目地址: https://github.com/icowan/redis-tool 把代码拉下来之后直接执行命令 make 就可以编译多个平台可执行文件,需要依赖golang编译器。

  • Windows amd64: redis-tool-windows-amd64.exe
  • MacOS amd64: redis-tool-darwin-amd64
  • Linux amd64: redis-tool-linux-amd64
  • Linux arm64: redis-tool-linux-arm64 查看使用方法:
代码语言:javascript
复制
$ chmod a+x redis-tool-linux-amd64
	$ ./redis-tool-linux-amd64 -h

支持的数据类型

  • string 字符串
  • hash 散列列表
  • list 列表
  • sorted-set 有序集合

如何使用

下载好命令并授权之后执行 ./redis-tool-linux-amd64 -h 可以查看该工具所支持的所有功能:

代码语言:javascript
复制
$ ./redis-tool-darwin-amd64 migrate -h
数据迁移命令
Usage:
redis-tool migrate [command]
Examples:
支持命令:
[hash, set, sorted-set, list]
Available Commands:
all         迁移所有
hash       哈希列表迁移
list       列表迁移
 set         redis set 迁移
sorted-set 有序集合迁移
Flags:
 -h, --help                   help for migrate
     --source-auth string     源密码
     --source-database int   源database
     --source-hosts string   源redis地址, 多个ip用','隔开 (default "127.0.0.1:6379")
     --source-prefix string   源redis前缀
     --source-redis-cluster   源redis是否是集群
     --target-auth string     目标密码
     --target-database int   目标database
     --target-hosts string   目标redis地址, 多个ip用','隔开 (default "127.0.0.1:6379")
     --target-prefix string   目标redis前缀
     --target-redis-cluster   目标redis是否是集群
Use "redis-tool migrate [command] --help" for more information about a command.

参数说明:

  • --source-auth: 源redis密码,如果有的话就填
  • --source-database: 源database,默认是 0
  • --source-hosts: 源redis地址, 集群的多个ip用','隔开 (default "127.0.0.1:6379")
  • --source-prefix: 源redis前缀, 可不填
  • --source-redis-cluster: 源redis是否是集群, 默认 false
  • --target-auth: 迁移目标redis密码,如果有的话就填
  • --target-database: 迁移目标database,默认是 0
  • --target-hosts: 迁移目标redis地址, 集群的多个ip用','隔开 (default "127.0.0.1:6379")
  • --target-prefix: 迁移目标redis前缀, 可不填
  • --target-redis-cluster: 迁移目标redis是否是集群, 默认 false

迁移单个key的数据

下面就举两个例子吧,其他的都差不太多。

Hash类型

可以通过命令 redis-tool migrate hash -h 查看使用说明

代码语言:javascript
复制
$ redis-tool migrate hash helloworld \
  --source-hosts 127.0.0.1:6379 \
  --target-redis-cluster true \
  --target-hosts 127.0.0.1:6379,127.0.0.1:7379 \
  --target-auth 123456
1.png
1.png

有序集合

可以通过命令 redis-tool migrate sorted-set -h 查看使用说明 有序集合的数据量可能会比较大,所以这里按 50000 为单位进行了切割。我这里测试过迁移近17000000万条的数据,用时40多分钟。

代码语言:javascript
复制
$ redis-tool migrate hash helloworld \
  --source-hosts 127.0.0.1:6379 \
  --target-redis-cluster true \
  --target-hosts 127.0.0.1:6379,127.0.0.1:7379 \
  --target-auth 123456
2.png
2.png

迁移所有key的数据支持通配符过滤

可以通过命令 redis-tool migrate all -h 查看使用说明

代码语言:javascript
复制
$ redis-tool migrate all "ipdetect:*" \ 
    --source-hosts 127.0.0.1:6379 \
    --target-redis-cluster true \
    --target-hosts 127.0.0.1:6379,127.0.0.1:7379 \
    --target-auth 123456

这个命令会编译匹配到的所有类型的key,再根据key的类型进行逐步迁移。

尾巴

使用golang写的一个比较简单的工具, 主要用于在Redis没有持久化或多套Redis向一套Redis迁移的情况下使用。

希望对大家有用,谢谢!

作者:宜信技术学院 王聪

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 本工具支持:
  • 支持的数据类型
  • 如何使用
  • 迁移单个key的数据
    • Hash类型
      • 有序集合
        • 迁移所有key的数据支持通配符过滤
        • 尾巴
        相关产品与服务
        云数据库 Redis
        腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档