网易视频云:redis-migration:独创的redis在线数据迁移工具

合集下载

Redis缓存的数据迁移与平滑升级实践

Redis缓存的数据迁移与平滑升级实践

Redis缓存的数据迁移与平滑升级实践随着互联网应用规模的不断扩大,对于缓存系统如Redis的需求也日益增长。

然而,作为一个基于内存的数据库,Redis在面对数据迁移和升级时,常常会面临一些挑战。

本文将介绍Redis缓存的数据迁移和平滑升级的实践方法,帮助读者深入理解如何高效、安全地进行Redis 的数据迁移和平滑升级。

一、Redis数据迁移的挑战在日常运维中,数据的迁移是一个常见而又重要的任务。

对于Redis缓存系统而言,数据迁移面临以下几个挑战:1. 数据的一致性:在数据迁移过程中,需要保证数据的一致性,避免因为数据迁移而导致数据丢失或者不一致的情况发生。

2. 迁移的效率:数据量大的情况下,迁移所需的时间非常长,可能会导致系统停机时间过长,影响业务的正常运行。

3. 迁移的可控性:迁移过程中,需要保证对业务的影响最小化,同时能够进行监控和调整。

二、Redis数据迁移的方案针对Redis数据迁移的挑战,我们可以采用以下方案来实现高效、安全的迁移:1. 设置主备机制:在进行数据迁移之前,可以先设置一个Redis备份节点,确保数据不会因为迁移而丢失。

备份节点可以按照一定的时间间隔将数据同步到备份节点,以实现数据的可靠性和备份。

2. 分批迁移数据:将大数据集合切分为多个较小的集合,分批迁移,可以提高迁移的效率。

同时,为了保证数据的一致性,可以使用半同步或者全同步的方式进行数据迁移。

3. 使用数据导出和导入工具:Redis提供了工具来支持数据的导出和导入。

可以使用`redis-cli`或者`redis-dump`等工具将数据导出到文件中,然后再导入到新的Redis实例中。

这样可以避免网络传输的延迟,提高迁移速度。

4. 监控和调优:在数据迁移的过程中,需要进行监控和调优,确保迁移过程的稳定和可靠。

可以使用Redis自带的`INFO`命令来监控实例的整体情况,并根据监控结果对迁移过程进行调整。

三、Redis平滑升级实践除了数据迁移,升级Redis版本也是一个重要的任务。

Redis迁移工具之Redis-shake

Redis迁移工具之Redis-shake

Redis迁移⼯具之Redis-shake Redis-shake is a tool for synchronizing data between two redis databases. Redis-shake是⼀个⽤于在两个redis之间同步数据的⼯具,满⾜⽤户⾮常灵活的同步、迁移需求1. 下载,解压wget -c https:///alibaba/RedisShake/releases/download/release-v1.6.24-20191220/redis-shake-1.6.24.tar.gztar -zxvf redis-shake-1.6.24.tar.gzcd redis-shake-1.6.24.tar.gz2. 配置⽂件# this is the configuration of redis-shake.# idid = redis-shake# log file,⽇志⽂件,不配置将打印到stdoutlog_file =# pprof portsystem_profile = 9310# restful port,查看metric端⼝http_profile = 9320# runtime.GOMAXPROCS, 0 means use cpu core number: runtime.NumCPU()ncpu = 0# parallel routines number used in RDB file syncing.parallel = 4# input RDB file. read from stdin, default is stdin ('/dev/stdin').# used in `decode` and `restore`.# 如果是decode或者restore,这个参数表⽰读取的rdb⽂件input_rdb = local_dump# output RDB file. default is stdout ('/dev/stdout').# used in `decode` and `dump`.# 如果是decode或者dump,这个参数表⽰输出的rdboutput_rdb = local_dump# source redis configuration.# used in `dump` and `sync`.# ip:port# 源redis地址source.address = 127.0.0.1:20441# password.source.password_raw = kLNIl691OZctWST# auth type, don't modify itsource.auth_type = auth# version number, default is6 (6for Redis Version <= 3.0.7, 7for >=3.2.0)source.version = 6# target redis configuration. used in `restore` and `sync`.# used in `restore` and `sync`.# ip:port# ⽬的redis地址target.address = 10.101.72.137:20551# password.target.password_raw = kLNIl691OZctWST# auth type, don't modify ittarget.auth_type = auth# version number, default is6 (6for Redis Version <= 3.0.7, 7for >=3.2.0)target.version = 6# all the data will come into this db. < 0 means disable.# used in `restore` and `sync`.target.db = -1# use for expire key, set the time gap when source and target timestamp are not the same.# ⽤于处理过期的键值,当迁移两端不⼀致的时候,⽬的端需要加上这个值fake_time =# force rewrite when destination restore has the key# used in `restore` and `sync`.# 当源⽬的有重复key,是否进⾏覆写rewrite = true# filter db or key or slot# choose these db, e.g., 5, only choose db5. defalut is all.# used in `restore` and `sync`.# ⽀持过滤db,只让指定的db通过filter.db =# filter key with prefix string. multiple keys are separated by ';'.# e.g., a;b;c# default is all.# used in `restore` and `sync`.# ⽀持过滤key,只让指定的key通过,分号分隔filter.key =# filter given slot, multiple slots are separated by ';'.# e.g., 1;2;3# used in `sync`.# 指定过滤slot,只让指定的slot通过filter.slot =# big key threshold, the default is500 * 1024 * 1024. The field of the big key will be split in processing.# 我们对⼤key有特殊的处理,此处需要指定⼤key的阈值big_key_threshold = 524288000# use psync command.# used in `sync`.# 默认使⽤sync命令,启⽤将会使⽤psync命令psync = false# enable metric# used in `sync`.# 是否启⽤metricmetric = true# print in log# 是否将metric打印到log中metric.print_log = true# heartbeat# send heartbeat to this url# used in `sync`.# ⼼跳的url地址,redis-shake将会发送到这个地址heartbeat.url = http://127.0.0.1:8000# interval by seconds# ⼼跳保活周期heartbeat.interval = 3# external info which will be included in heartbeat data.# 在⼼跳报⽂中添加额外的信息heartbeat.external = test external# local network card to get ip address, e.g., "lo", "eth0", "en0"# 获取ip的⽹卡work_interface =# sender information.# sender flush buffer size of byte.# used in `sync`.# 发送缓存的字节长度,超过这个阈值将会强⾏刷缓存发送sender.size = 104857600# sender flush buffer size of oplog number.# used in `sync`.# 发送缓存的报⽂个数,超过这个阈值将会强⾏刷缓存发送sender.count = 5000# delay channel size. once one oplog is sent to target redis, the oplog id and timestamp will also stored in this delay queue. this timestamp will be used to calculate the time delay when receiving ack from target redis.# used in `sync`.# ⽤于metric统计时延的队列sender.delay_channel_size = 65535# ----------------splitter----------------# below variables are useless for current opensource version so don't set.# replace hash tag.# used in `sync`.replace_hash_tag = false# used in `restore` and `dump`.extra = false摘取部分内容:这部分应该是⽤户最困惑的地⽅,为了满⾜⽤户的灵活配置,⽬前开放了较多的配置项,但⽤户⼀开始使⽤并不需要管这么多的项。

Redis缓存的跨数据中心复制与数据同步

Redis缓存的跨数据中心复制与数据同步

Redis缓存的跨数据中心复制与数据同步随着互联网应用的不断发展,数据中心的规模和数量也越来越大。

为了提高系统性能和可用性,许多企业选择使用Redis作为缓存解决方案。

但是在跨多个数据中心使用Redis缓存时,如何保证缓存的数据一致性和可靠性是一个重要的问题。

一、数据中心架构和数据同步原理在典型的跨数据中心架构中,每个数据中心都有一主多从的Redis集群,其中主节点用于处理读写请求,从节点负责数据的复制和同步。

数据同步一般分为全量同步和增量同步两种方式。

1.全量同步:当从节点刚刚加入集群或者数据中心发生故障后恢复时,需要进行全量同步。

全量同步过程中,从节点会向主节点发送一次性请求,要求将整个数据集复制给自己。

全量同步的缺点是耗费大量带宽和处理时间,但是它能够确保从节点数据的完整性。

2.增量同步:全量同步完成后,从节点会持续与主节点进行增量同步。

增量同步是通过订阅主节点的数据变更消息,然后将变更的数据进行复制和更新。

增量同步的优点是性能高效,但是网络延迟和消息丢失可能导致数据同步的不一致。

二、解决跨数据中心复制和数据同步的问题为了解决Redis跨数据中心复制和数据同步过程中可能出现的问题,可以采取以下措施:1.合理配置数据同步参数:在Redis配置文件中,可以通过设置合适的参数来控制数据同步的行为。

例如,可以通过调整repl-backlog-size参数来增加从节点的复制缓冲区大小,减少因为网络延迟导致的数据丢失。

2.使用复制链路加密:为了保证数据在跨数据中心传输的安全性,可以使用TLS/SSL等加密手段来保护复制链路的数据传输过程。

3.监控和报警机制:建立完善的监控和报警机制,及时发现并解决数据同步过程中的异常情况,例如主节点宕机、网络故障等。

4.数据备份和恢复策略:定期进行数据备份,并建立快速恢复策略,以应对数据中心故障和灾难恢复的需求。

5.灰度发布和滚动升级:在进行Redis版本升级或者配置调整时,可以采用灰度发布和滚动升级的方式,逐步验证系统的稳定性和数据一致性。

Redis缓存数据迁移工具介绍

Redis缓存数据迁移工具介绍

Redis缓存数据迁移工具介绍Redis是一款高性能的内存数据库,常用作缓存和存储键值对数据。

在实际应用中,我们经常需要对Redis中的数据进行迁移,例如从一个Redis实例迁移到另一个实例,或者从一个集群迁移到另一个集群。

为了简化这个过程,Redis提供了一些数据迁移工具,本文将介绍其中几个常用的工具。

1. Redis迁移工具 - redis-cliredis-cli是Redis官方提供的命令行工具,它不仅可以用来执行Redis命令,还可以通过它进行数据迁移。

redis-cli提供了多个命令用于将数据从一个Redis实例复制到另一个实例,其中最常用的命令是`--rdb`和`--pipe`。

通过`--rdb`命令,可以将源Redis实例的数据导出为RDB文件,然后通过`--pipe`命令将RDB文件中的数据导入到目标Redis实例。

这种方式适用于小规模的数据迁移,但对于大规模数据迁移来说,速度可能比较慢。

2. Redis迁移工具 - Redis ReplicationRedis Replication 是Redis自带的数据复制功能,可以用于实现主从同步,也可以用于数据迁移。

通过配置Redis的主从复制,可以将主节点上的数据复制到从节点上。

当数据复制完成后,可以将从节点提升为主节点,实现数据的迁移。

Redis Replication的优点是可以保持源数据的实时同步,缺点是需要手动配置主从关系,并且在迁移过程中需要停止对源Redis的写操作。

3. Redis迁移工具 - Redis Cluster如果要迁移的是一个Redis集群而不是单个实例,那么可以使用Redis Cluster来实现。

Redis Cluster是一种分布式环境下的数据迁移和管理工具,它将数据分片并存储在多个Redis实例中,提供了高可用性和可扩展性。

通过Redis Cluster,可以实现对整个集群的数据迁移,包括迁移数据分片和重新分片等操作。

Redis的数据备份与恢复工具推荐

Redis的数据备份与恢复工具推荐

Redis的数据备份与恢复工具推荐Redis是一个开源的高性能的键值存储系统,被广泛用于缓存、消息队列、实时统计等场景。

在使用Redis时,数据的备份与恢复是一项至关重要的工作。

本文将推荐几种可靠的Redis数据备份与恢复工具,帮助你有效保护和恢复数据。

1. Redis官方工具:Redis CLI和Redis-benchmarkRedis官方提供了Redis CLI和Redis-benchmark两个命令行工具,其中Redis CLI除了可以用来与Redis服务器交互外,还可以通过指定不同的选项来进行数据的备份与恢复。

通过使用`--rdb [filename]`选项,你可以将当前的Redis数据库保存到指定的备份文件中。

而恢复数据则可以使用`--rdb [filename]`选项,将备份文件中的数据导入到Redis服务器中。

Redis-benchmark则可以用来对Redis服务器进行性能测试,以确保备份与恢复的过程不会对服务器性能产生过大的影响。

2. Redis备份与恢复的第三方工具:RedisDesktopManagerRedisDesktopManager是一款免费的Redis管理工具,除了基本的Redis数据管理功能外,它还提供了数据备份与恢复的功能。

在RedisDesktopManager中,你可以通过菜单选项或快捷键来方便地进行数据的备份与恢复操作。

通过选择指定的数据库和键,你可以将数据直接备份到本地文件或者是其他地方,同样地,你也可以选择备份文件进行数据的恢复操作。

3. Redis备份与恢复的第三方工具:AOF-RWAOF-RW是一款开源的Redis AOF文件的转换器工具,可以将AOF文件转换成RDB文件,方便进行数据的备份与恢复。

通过AOF-RW,你可以将当前的AOF文件转换成RDB文件,将其备份到指定的位置。

而在进行数据恢复时,则可以将备份的RDB文件导入Redis服务器,使用`redis-server --dir [rdb文件目录] --dbfilename [rdb文件名]`命令来恢复数据。

Redis缓存的数据迁移与升级策略

Redis缓存的数据迁移与升级策略

Redis缓存的数据迁移与升级策略Redis是一款高性能的开源内存数据库,广泛应用于分布式缓存和高性能应用中。

在实际应用中,随着业务的发展,常常需要对Redis进行数据迁移和升级,以满足业务需求的变化。

本文将介绍Redis缓存的数据迁移与升级策略,以帮助读者在实际应用中更好地管理和优化Redis缓存。

一、数据迁移策略数据迁移是指将Redis缓存中的数据从一个Redis实例迁移到另一个Redis实例的过程。

在实际应用中,数据迁移常常发生在以下情况下:1. 扩容:当业务量增大,原有Redis实例的内存不足以存储所有数据时,需要将部分数据迁移到新的Redis实例上,以扩充缓存容量。

2. 数据中心迁移:当应用从一个数据中心迁移到另一个数据中心时,需要将Redis缓存中的数据进行迁移,以确保应用在新的数据中心正常运行。

在进行数据迁移时,需要注意以下几点:1. 选择合适的迁移方式:Redis提供了多种数据迁移方式,如通过Redis复制、全量数据导出导入、增量数据同步等。

在选择迁移方式时,需要根据实际情况选择适合的方式,以确保迁移效率和数据一致性。

2. 控制迁移的并发度:数据迁移过程中,源Redis实例和目标Redis 实例可能会出现数据不一致的情况,因此需要控制迁移的并发度,避免数据丢失或数据不一致的情况发生。

3. 监控迁移进度:在进行数据迁移时,需要监控迁移的进度和状态,以及及时发现和解决可能出现的问题。

二、数据升级策略数据升级是指将Redis缓存的数据从一个版本升级到另一个版本的过程。

在实际应用中,数据升级常常发生在以下情况下:1. Redis版本升级:当Redis发布新版本时,为了获得新功能和性能优化,需要将原有Redis缓存中的数据升级到新版本。

2. 数据结构调整:随着业务发展,可能需要对Redis使用的数据结构进行调整,以提高查询效率或满足新的业务需求。

这时需要对原有数据进行升级。

在进行数据升级时,需要注意以下几点:1. 确认升级兼容性:在进行版本升级之前,需要确认新版本对原有数据的兼容性,以及清楚升级可能带来的影响。

redis集群在线slot迁移原理

redis集群在线slot迁移原理

Redis集群的在线slot迁移是一种在不中断服务的情况下重新分配槽(slot)到不同节点的过程。

这种迁移对于维护集群的平衡和扩展非常有用。

以下是Redis集群在线slot迁移的基本原理:1. 槽分配:- Redis集群将整个数据库划分为16384个槽,每个槽可以存储任意数量的键值对。

-集群中的每个节点负责处理一部分槽。

节点可以处理0到16384个槽,取决于集群的配置和大小。

2. 迁移触发:- 在线slot迁移可以由集群自动触发,也可以由管理员手动触发。

自动触发通常是基于集群的负载和节点的健康状况。

- 如果集群检测到某个节点的负载过高或节点故障,它可能会决定将槽从该节点迁移到其他节点。

3. 迁移过程:- 集群中的主节点(master)负责管理槽的迁移。

主节点会与从节点(slave)协调,确定迁移的槽和目标节点。

- 主节点会将槽中的键值对复制到目标节点,然后更新集群的元数据,以反映新的槽分配。

- 在迁移过程中,集群会确保槽始终有节点在处理,以保持服务的可用性。

4. 数据复制:- 数据复制是通过Redis的复制机制完成的。

主节点会读取槽中的数据,然后将这些数据写入到目标节点。

- 目标节点在接收到数据后会确认数据已成功复制,这样主节点就可以将槽标记为已迁移。

5. 集群状态更新:- 集群中的每个节点都会维护集群的状态信息。

当槽迁移完成后,集群的状态信息会被更新,以反映新的节点和槽分配。

- 这确保了集群中的每个节点都有最新的集群配置信息。

6. 客户端透明性:- 对于客户端来说,槽迁移是透明的。

客户端可以像平常一样与集群交互,而不会注意到槽迁移的过程。

- 集群会确保客户端请求被正确地路由到负责相应槽的节点。

7. 故障转移:- 如果迁移过程中发生故障,集群会尝试恢复迁移前的状态。

这可能涉及到从其他节点获取数据或将数据迁移回原来的节点。

在线slot迁移是Redis集群的一个重要特性,它使得集群能够动态地调整资源分配,以适应不同的工作负载和节点健康状况。

用redis-dump工具对redis集群所有数据进行导出导入

用redis-dump工具对redis集群所有数据进行导出导入

⽤redis-dump⼯具对redis集群所有数据进⾏导出导⼊安装redis-dumpredis-dump是基于ruby开发,需要ruby环境,⽽且新版本的redis-dump要求2.2.2以上的ruby版本,centos中yum只能安装2.0版本的ruby。

需要先安装ruby的管理⼯具rvm安装⾼版本的ruby安装rvm可参考官⽹:执⾏下列两个命令安装rvm;# gpg --keyserver hkp:// --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB# curl -sSL https://get.rvm.io | bash -s stable# find / -name rvm -print/usr/local/rvm/usr/local/rvm/scripts/rvm/usr/local/rvm/bin/rvm/usr/local/rvm/src/rvm/usr/local/rvm/src/rvm/scripts/rvm/usr/local/rvm/src/rvm/bin/rvm/usr/local/rvm/src/rvm/lib/rvm/usr/local/rvm/lib/rvm#使rvm⽣效source /usr/local/rvm/scripts/rvm安装ruby# 查看可以安装的Ruby版本rvm list known# 当前最⾼的稳定版本是2.5.1rvm install ruby 2.5.1#查看ruby版本ruby --version安装redis-dump# 移除gem⾃带源,国内连不上gem sources --remove https:///# 添加国内淘宝源gem sources -a https:///# 安装redis-dumpgem install redis-dump –V#查看redis-dump版本,安装成功可以开⼼的备份和还原redis了redis-dump -vredis-dump v0.4.0使⽤redis-dump导出数据redis转存储jsonredis-dump -u 127.0.0.1:6378 -a password > redis_6378.jsonjson还原redis< redis_6378.json redis-load -u 127.0.0.1 -a passwordRedis集群数据导出导⼊如果是redis集群模式,需要对集群各个实例分别导出导⼊,如下所⽰:数据导出命令(redis-dump -u :password@host:port -d 0 > fileName.json)⽆密码可省略redis-dump -u IP1:6379 -d 0 > 6379.jsonredis-dump -u IP2:6380 -d 0 > 6380.jsonredis-dump -u IP3:6381 -d 0 > 6381.json执⾏完成命令之后,⽣成3个json⽂件,即为集群节点数据,为提升导⼊效率,可以将⽂件拷贝到⽬标集群机进⾏导⼊,也可以直接在本机导⼊。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

网易视频云:redis-migration:独创的redis在线数据迁移
工具
网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅、低时延、高并发的视频直播、录制、存储、转码及点播等音视频的PaaS服务。

在线教育、远程医疗、娱乐秀场、在线金融等各行业及企业用户只需经过简单的开发即可打造在线音视频平台。

现在,网易视频云与大家分享一下redis-migration:独创的redis在线数据迁移工具.
一、常见redis数据迁移方式
业内,常见的redis数据迁移方式有以下三种:aof(日志文件)、rdb(快照文件)、replication(主从复制)。

其中,aof和rdb两种方式适用于跨网络(网络隔离)的redis实例之间的数据迁移,通过:在源实例上执行指令(bgrewriteaof/bgsave)生成aof或者rdb文件->下载数据文件->上传数据文件->启动目标实例->完成数据迁移。

aof和rdb的差异,主要体现在数据格式和数据加载速度两个方面,前者是纯文本格式(redis文本协议的流水记录),加载的过程相当于历史重放,而后者是二进制格式,直接进行加载,所以一般情况下rdb数据加载会比aof加载快!这也是网上建议使用rdb做跨网络数据迁移的一个重要的原因。

而replication方式,适用于同一网络内的redis实例之间的数据迁移,在目标实例上通过指令(slaveof)完成数据全量复制迁移,在单实例的扩容应用上最适合。

二、开发redis-migration的需求
前面三种数据迁移方式都只解决点对点的数据迁移(缺陷1),而且aof和rdb还存在增量数据不能同步(缺陷2)的问题。

事实上,我们开发redis-migration这个工具的原始需求来自于网易私有云redis集群的横向扩容:当集群在纵向扩容到达云主机规格极限时候,集群如何再进行扩容?
三、如何开发redis-migration
工具定义
比较前面三种数据迁移方式,思考能不能把replication(主从复制)的过程剥离出来做成一个独立工具呢?在连接源redis实例时候把自己模拟成slave,在连接目标redis实例(集群)时候把自己模拟成客户端,如下:
这样的话,源redis实例即使是分布式集群(多个源redis实例),也只需要同时启动多个迁移工具实例就能解决了,如下:
流程设计
迁移过程整体上可以分为三个部分:快照数据和增量数据,其中增量数据分为2个阶段,第1阶段会落地成文件,第二阶段不落地直接TCP转发:
技术难点
1.解析数据文件:包括AOF和RDB,相对而言解析AOF文件会简单些,它是文本格式的,按照redis协议
纯文本处理即可;而RDB文件是二进制格式的,自己重新实现没这个必要,因为redis已经有解析RDB 的接口,但源码是和redis本身是耦合在一起的,比如对各种共享对象、全局变量、数据结构dict/sds等的依赖,所以最后实现上变成了redis-benchmark.c和redis.c的结合体;
2.处理redis协议:解析来自数据源的redis数据,读取落地的RDB和AOF文件数据组装成redis协议数
据。

虽然客户端使用的还是hiredis库,但是请求和应答报文,都不能使用库提供的接口来组装和解析,需要重新实现,这一块工作量比较大。

RDB和AOF的请求报文组装以及各自应答消息的解析与校验,其中RDB数据是二进制的,所以需要逐字段进行组装,hiredis库没有提供这样的接口,而且假设提供了也需要评估起性能;同时RDB数据里会设置key的有效时间,一条RDB数据可能需要组装成两条redis指令;两种数据都解析出类型后,用来精确判断应答消息的正确与否;
3.设计高效迁移:RDB数据有个特点,它保存的是每个key的快照,无时序要求,所以可以考虑并发发送
的方式,提高迁移速度;而AOF数据,有时序要求,在目的地进行重放加载,不能并发,否则会乱序,出现数据错误,只能一个客户端发送,这时采用的是pipeline(批量)的方式;
4.方便调试定位:迁移工具和数据源、数据目的地的交互都是在线TCP流,而且都是瞬间完成的,对于中间
的错误和异常,比较难以捕捉,现在的做法是在数据流入和流出的地方统一加了十六进制的报文日志;
功能特点
1.轻量级:仅增加了1个redis-migration.c文件,同时在Makefile文件中增加编译redis-migration二
进制程序的2行指令;单线程,异步消息驱动模型,轻量化,工具编译出来约4M大小;
2.高性能:前面有人可能会好奇,单线程程序怎么实现多客户端并发?是这样的,因为一个客户端的请求是
串行的,存在RTT这样一个时间窗口,那么在这个时间窗口里并发多个客户端就可以避免系统等待,极大提高性能;另外,AOF迁移时候使用了pipeline特性,批量发送,减少RTT来加速迁移;
3.低成本:迁移过程中的数据都做了落地处理,工具本身没有对数据进行加载,内存开销就很小,这一点非
常重要!
4.易操作:启动后,观察迁移进度日志即可;
工具价值
redis-migration迁移工具不仅可以解决外部实例迁往网易私有云redis集群、私有云redis集群横向扩容的问题,也可以解决外部redis集群的扩容问题,具有通用价值。

比如:一个客户端分片的分布式redis 集群,通过redis-migration工具(外加一个数据分片代理程序,比如twemproxy)将数据实时同步到新的集群,然后应用直接切到新集群上,集群横向扩容完成,中间不丢失任何数据!
分布式系统的横向扩容历来是很难实现的,对redis集群这种纯内存数据库也不例外,而redis-migration 迁移工具是对分布式redis集群横向扩容实现的一次实践,事实证明效果比较理想!。

相关文档
最新文档