Redis之复制

一、复制的目的

二、复制的原理(分为同步和命令传播两个操作)

2.1、旧版redis复制的原理
  • 旧版redis的复制功能
    • 同步是指主服务器把缓存数据复制到从服务器上,具体是:
      • 1、从服务器向主服务器发生SYNC命令;
      • 2、主服务器接收到SYNC命令后,执行BGSAVE命令,生成RDB文件,同时还会用一个缓冲区记录从现在开始的所有写操作命令;
      • 3、当主服务器的BGSAVE命令执行完毕,即生成万RDB文件后,会将RDB文件发送给从服务器,从服务器接收到之后,载入到内存;
      • 4、主服务器会把缓冲区记录的写操作命令也发送给从服务器去执行。
    • 同步操作使得主从服务器达到或者接近达到数据一致了;但是如果刚同步完,主服务器又有写操作进来,此时显然数据不一致了,为了让主从服务器再一次达到数据一致状态,主服务器就需要对从服务器进行命令传播操作,即将主服务器执行的写命令,发送给从服务,从服务器也执行这个写命令。操作完成之后数据又一致了。为了让主从服务器的数据状态再次一致,主服务器需要到从服务器执行命令传播操作,即把主服务器执行的命令发送给从服务器执行一遍。
  • 新版redis的复制功能
  • 同步操作。使用PSYNC命令来执行同步操作
    • PSYNC命令具有完全重同步和部分重同步两种模式
    • 完全重同步模式和旧版reids同步逻辑基本一样,不细说。
    • 部分重同步模式,在主从服务器断线重连后,主服务器只需要将断开连接期间执行的写命令完整的发送给从服务器执行即可。不需要生成RDB文件,也不需要传输RDB文件到从服务器。
  • 命令传播和旧版redis一致

三、复制的优缺点

  • 旧版redis的复制功能的缺点
    • 主从服务器短线重连,重复之后的数据同步。会生成包含已经被同步过的数据的RDB文件,而RDB又要发送给从服务器,资源浪费、而且效率低。

四、复制的重要细节点

  • 对于主服务器挂掉、从服务器挂掉,从哪个服务器复制数据、从什么位置复制数据的问题?

    • PSYNC命令提供了解决方案,PSYNC命令具有完全重同步和部分重同步两种模式
  • 完全重同步

  • 部分重同步,部分重同步由三部分操作来完成

    • 主从服务器的位置偏移量,对比位置偏移量相等来确定主从服务器数据一致;
    • 主服务器的复制基于缓冲区,保存着最近一段时间内发送给从服务器的写操作命令的一块内存区域;对比重新连接后的从服务器发送过来的位置偏移量是否在缓存区内,如果在,从指定偏移量补发,如果不在则走完全同步逻辑。
    • 主服务器运行ID,主从服务器初次建立连接时,主服务器把自身的服务ID发送给从服务器,断线重连后,从服务器写的着记录的主服务器ID,对应的主服务器接收到从服务器发过来的ID,通过和自身的ID比较,如果相同,尝试走部分同步逻辑,如果不同走完全同步逻辑。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 本篇就一下方面展开分析 如何使用主从复制? 主从复制的原理(重点是全量复制和部分复制、以及心跳机制) 实际应用中需...
    lucode阅读 988评论 0 5
  • 参考文献:黄健宏《Redis设计与实现》 何为复制 redis复制,即为数据库状态一致,比如说我在主服务器上执行了...
    0爱上1阅读 663评论 0 1
  • 一、Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性...
    爱情小傻蛋阅读 944评论 0 0
  • 本文主要介绍Redis集群中主从服务器复制功能的实现。 在Redis中,用户可以通过执行SLAVEOF命令或设置s...
    wenmingxing阅读 966评论 0 5
  • Redis复制 在Redis中,用户可以通过执行SALVEOF命令或者设置slaveof选项,让一个服务器去复制(...
    HRADPX阅读 301评论 0 2