Redis migrate数据迁移工具的使用教程

前言

在工作中可能会遇到单点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

查看使用方法:

$ chmod a+x redis-tool-linux-amd64
$ ./redis-tool-linux-amd64 -h

支持的数据类型

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

如何使用

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

$ ./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 查看使用说明

$ 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

有序集合

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

有序集合的数据量可能会比较大,所以这里按 50000 为单位进行了切割。我这里测试过迁移近17000000万条的数据,用时40多分钟。

$ 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

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

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

$ 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迁移的情况下使用。

总结

到此这篇关于Redis migrate数据迁移工具的文章就介绍到这了,更多相关Redis migrate数据迁移工具内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Redis源码解析:集群手动故障转移、从节点迁移详解

    一:手动故障转移 Redis集群支持手动故障转移.也就是向从节点发送"CLUSTER  FAILOVER"命令,使其在主节点未下线的情况下,发起故障转移流程,升级为新的主节点,而原来的主节点降级为从节点. 为了不丢失数据,向从节点发送"CLUSTER  FAILOVER"命令后,流程如下: a:从节点收到命令后,向主节点发送CLUSTERMSG_TYPE_MFSTART包:          b:主节点收到该包后,会将其所有客户端置于阻塞状态,也就是在10s的时间内

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

    本文实例讲述了php实现redis数据库指定库号迁移的方法,分享给大家供大家参考.具体如下: redis普通的数据库迁移,只能整个redis save,或者利用主从,当然也可以安装一个redis-dump,不过比较麻烦,这里提供一种php的脚本,实现指定库号的迁移,其实也就是遍历根据存储类型,读出来,插入新库,效果是这样: 复制代码 代码如下: [root@localhost ~]# php 1.php 1/407 101/407 201/407 301/407 401/407 PHP实例代码如

  • Redis数据导入导出以及数据迁移的4种方法详解

    1.aof 导入方式. 因为这种方式比较简单,所以我就先介绍它. 分两步来实现,第一步先让源 Redis 生成 AOF 数据文件. # 清空上文目标实例全部数据 redis-cli -h 目标RedisIP -a password flushall # 源实例开启 aof 功能,将在 dir 目录下生成 appendonly.aof 文件 redis-cli -h 源RedisIP -a password config set appendonly yes dir 目录,可以通过 config

  • 从MySQL到Redis的简单数据库迁移方法

    从mysql搬一个大表到redis中,你会发现在提取.转换或是载入一行数据时,速度慢的让你难以忍受.这里我就要告诉一个让你解脱的小技巧.使用"管道输出"的方式把mysql命令行产生的内容直接传递给redis-cli,以绕过"中间件"的方式使两者在进行数据操作时达到最佳速度. 一个约八百万行数据的mysql表,原本导入到redis中需要90分钟,使用这个方法后,只需要两分钟.不管你信不信,反正我是信了. Mysql到Redis的数据协议 redis-cli命令行工具有

  • Redis migrate数据迁移工具的使用教程

    前言 在工作中可能会遇到单点Redis向Redis集群迁移数据的问题,但又不能老麻烦运维来做.为了方便研发自己迁移数据,我这里写了一个简单的Redis迁移工具,希望对有需要的人有用. 本工具支持: 单点Redis到单点Redis迁移 单点Redis到Redis集群迁移 Redis集群到Redis集群迁移 Redis集群到单点Redis迁移 该工具已经编译成了多平台命令,直接从Github下载二进制文件执行就好了. 项目地址: https://github.com/icowan/redis-too

  • Redis集群的搭建图文教程

    redis集群的特点: 1.机器多,能够保证redis服务器出现问题后,影响较小 2.自备主从结构,自动的根据算法划分主从结构.动态的实现 3.能够根据主从结构自动的实现高可用 4.实现数据文件的备份 3.Redis集群的搭建步骤: 准备9台服务器 3主6从 一个主机下有2个子节点 7000-7008 2.拷贝redis.conf文件到文件夹中 cp redis.conf 7000/redis-7000.conf mkdir 7000 7001 7002 7003 7004 7005 7006

  • Redis在springboot中的使用教程

    依赖如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 配置文件如下: spring: redis: open: true # 是否开启redis缓存 true开启 false关闭 database: 0 host: 47.10

  • python3实现将json对象存入Redis以及数据的导入导出

    Redis数据类型 String:二进制安全,可以包含任何数据 Hash:一个键值(key=>value)对集合 List:简单的字符串列表 Set:string类型的无序集合 Zset:每个元素都会关联一个double类型的分数,redis通过分数来为集合中的成员进行从小到大的排序 Redis基本命令 Key: set, get, delete Hash: hmset, hget, hdel List: lpush, lindex Set: sadd,smembers Zset: zadd,

  • Redis缓存IO模型的演进教程示例精讲

    目录 前言 事件模型 通信 copy数据的开销 数据怎么知道发给哪个socket socket的数据怎么通知程序来取 Reactor IO多路复用器 select epoll epoll是怎么做到的? 单线程到多线程的演进 单线程 异步线程 多线程 多线程的作用点? 多线程的原理 前言 redis作为应用最广泛的nosql数据库之一,大大小小也经历过很多次升级.在4.0版本之前,单线程+IO多路复用使得redis的性能已经达到一个非常高的高度了.作者也说过,之所以设计成单线程是因为redis的瓶

  • springboot整合redis进行数据操作(推荐)

    redis是一种常见的nosql,日常开发中,我们使用它的频率比较高,因为它的多种数据接口,很多场景中我们都可以用到,并且redis对分布式这块做的非常好. springboot整合redis比较简单,并且使用redistemplate可以让我们更加方便的对数据进行操作. 1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starte

  • 浅谈redis内存数据的持久化方式

    一.概述 Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的,然而当Redis重启后,所有存储在内存中的数据将会丢失,在很多情况下是无法容忍这样的事情的.所以,我们需要将内存中的数据持久化!典型的需要持久化数据的场景如下: 将Redis作为数据库使用: 将Redis作为缓存服务器使用,但是缓存miss后会对性能造成很大影响,所有缓存同时失效时会造成服务雪崩,无法响应. 本文介绍Redis所支持的两种数据持久化方式. 二.Redis数据持久化 Redis支持两种数据持久化方式:RDB

  • spring整合redis实现数据缓存的实例代码

    数据缓存原因:有些数据比较多,如果每次访问都要进行查询,无疑给数据库带来太大的负担,将一些庞大的查询数据并且更新次数较少的数据存入redis,能为系统的性能带来良好的提升. 业务逻辑思路:登入系统,访问数据时,检查redis是否有缓存,有则直接从redis中提取,没有则从数据库查询出,并存入redis中做缓存. 为什么要用redis做缓存: (1)异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录. (2)支持丰富的数据类型:Redis支持最大多数开发人员已经知道

  • SpringBoot Redis缓存数据实现解析

    这篇文章主要介绍了SpringBoot Redis缓存数据实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.启用对缓存的支持 spring对缓存的支持有两种方式: a.注解驱动的缓存 b.XML声明的缓存 本文主要介绍纯Java配置的缓存,那么必须在配置类上添加@EnableCaching,这样的话就能启动注解驱动的缓存. 2.使用Redis缓存 缓存的条目不过是一个键值对(Key-Value),其中key描述了产生value的操作和

  • 使用Redis获取数据转json,解决动态泛型传参的问题

    场景: 项目有两种角色需要不同的登录权限,将redis做为用户登录信息缓存数据库.码一个方法,希望能够根据传入不用用户实体类型来获取相应的数据.用户实体为:SessionEntity<User1>.SessionEntity<User2>.json使用FastJson. 先阐述遇到的几个问题: 1.redis获取到的数据序列化后,转json,经常提示转换异常(并不是每次,只是时常). 2.不想每种用户都书写一个redis操作方法(显得tai low). 解决: 1.redis获取到

随机推荐