介绍

Redis支持简单的主从(master-slave)复制功能,当主Redis服务器更新数据时能将数据同步到从Redis服务器

配置

在Redis中使用复制功能非常容易

  • 在从Redis服务器的redis.conf中写入slaveof masterip masterport即可,主Redis服务器不需要做任何配置
  • 在启动Redis服务器的时候,指定主服务器,redis-server --slaveof masterip masterport
  • 在客户端指定主服务器,redis> SLAVEOF masterip masterport,SLAVEOF命令会停止与原有主服务器的同步,转而向新主服务器进行同步

复制运行原理

当从Redis服务器启动时会向主Redis服务器发送SYNC命令,主Redis服务器接收到SYNC命令后开始进行RDB持久化,并将这期间接收到的写入操作命令都缓存起来,等RDB持久化完成后,将快照和缓存起来的命令一并发送给从Redis服务器,从Redis服务器接收到后开始载入快照和命令,这一过程称之为复制初始化。复制初始化完成后,每当主Redis接收到写入命令后,就会将命令同步给从Redis服务器,保证主从数据一致。

增量复制

在Redis2.6之前,主从断开重连后,一定会进行一次快照操作然后将快照发送给从数据库,即使断开期间只有几条命令被执行,这就使得断开重连后的数据恢复过程效率很低。在Redis2.8之后,主从断开重连后会根据断开之前最新的命令偏移量进行增量复制
1)主服务器在同步命令到从服务器的时候,会先将命令放入一个缓冲队列中并记录一个复制偏移量,同时主从服务器都会记录一个主服务器的运行ID。
2)当主从断开重连后,会判断主服务器保存的运行ID和从服务器发送过来的运行ID是否相同,相同则将从复制偏移量开始往后的所有命令一并发送给从服务器。如果不同,则进行一次复制初始化(将RDB快照和和这期间缓存起来的命令一并发送给主服务器)。
3)缓冲队列的大小默认是1MB,可以在redis.conf中的配置项repl-backlog-size进行设置,还有一个配置项repl-backlog-ttl,表示当主从断开后,缓冲队列的缓存时间。

Redis复制(replication)的更多相关文章

  1. redis 系列22 复制Replication (下)

    一. 复制环境准备 1.1 主库环境(172.168.18.201) 环境 说明 操作系统版本 CentOS  7.4.1708  IP地址 172.168.18.201 网关Gateway 172. ...

  2. redis 系列21 复制Replication (上)

    一.   概述 使用和配置主从复制非常简单,每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上,并且无论这期间 master 发生了什么, slave ...

  3. Redis 复制、Sentinel的搭建和原理说明

    背景: Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端) ...

  4. redis复制原理和应用

    1.前言 说到分布式高可用,必然少不了复制,一来是为了做个冗余备份防止数据丢失,二来还可以达到分流来提高性能的目的.基本架构: 下面用M表示Master(主服务器),S表示Slave(从服务器),话不 ...

  5. redis系列--主从复制以及redis复制演进

    一.前言 在之前的文章已经详细介绍了redis入门基础已经持久化相关内容包括redis4.0所提供的混合持久化. 通过持久化功能,Redis保证了即使在服务器宕机情况下数据的丢失非常少.但是如果这台服 ...

  6. 深入理解redis复制原理

    原文:深入理解redis复制原理 1.复制过程 2.数据间的同步 3.全量复制 4.部分复制 5.心跳 6.异步复制 1.复制过程 从节点执行 slaveof 命令. 从节点只是保存了 slaveof ...

  7. Redis Persistent Replication Sentinel Cluster的一些理解

    Redis Persistent Replication Sentinel Cluster的一些理解 我喜欢把工作中接触到的各种数据库叫做存储系统,笼统地说:Redis.Mysql.Kafka.Ela ...

  8. 搞懂Redis复制原理

    前言 与大多数db一样,Redis也提供了复制机制,以满足故障恢复和负载均衡等需求.复制也是Redis高可用的基础,哨兵和集群都是建立在复制基础上实现高可用的.复制不仅提高了整个系统的容错能力,还可以 ...

  9. Redis 复制原理及特性

    摘要 早期的RDBMS被设计为运行在单个CPU之上,读写操作都由经单个数据库实例完成,复制技术使得数据库的读写操作可以分散在运行于不同CPU之上的独立服务器上,Redis作为一个开源的.优秀的key- ...

  10. Redis 复制、Sentinel的搭建和原理说明(转)

    Redis 复制.Sentinel的搭建和原理说明  转自:http://www.cnblogs.com/zhoujinyi/p/5570024.html. 背景: Redis-Sentinel是Re ...

随机推荐

  1. 【BZOJ4556】[Tjoi2016&Heoi2016]字符串 后缀数组+二分+主席树+RMQ

    [BZOJ4556][Tjoi2016&Heoi2016]字符串 Description 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一 ...

  2. 【BZOJ1834】[ZJOI2010]network 网络扩容 最大流+最小费用流

    [BZOJ1834][ZJOI2010]network 网络扩容 Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费用.求: 1. 在不 ...

  3. nginx如何利用自定义的conf文件启动?

    1.进入nginx的安装目录; 2.nginx -s -c conf/my.conf  (校验该文件是否有效)   nginx -s -c conf/my.conf 命令会卡死,存疑 3.start ...

  4. zeptojs使用及介绍,手机端为什么一定要用zeptojs?

    zepto是和jQuery和类似的框架,由于jQuery内置了很多解决浏览器兼容性的代码,导致jQuery过于臃肿,对于移动端来说,不需要太过于考虑浏览器的兼容,所以就诞生zeptojs. 总的来说: ...

  5. angularJS中的MVC思想?

    mvc 思想: 将应用程序的组成,划分为三个部分:model , controller 和 view ; - 控制器的作用是用来初始化模型用的: - 模型就是用于存储数据的: - 视图是展示数据的: ...

  6. R的grep和grepl

    grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, useBytes = FALSE, ...

  7. MySQL数据库连接池导致页面登录无法查询问题解决过程

    环境为tomcat+mysql 页面卡在登录界面或者登录后点击查询卡死,tomcat日志 连接池不可达 原因连接池不可用 解决办法 停止tomcat然后等待主机所有连接mysql的链接完全关闭再启动t ...

  8. mysql 数据操作 单表查询 简单查询 避免重复DISTINCT

    创建数据库company create database company charset=utf8; use company; company.employee 员工id id int 姓名 emp_ ...

  9. gstreamer应用笔记

    gstreamer官网 https://gstreamer.freedesktop.org/ 应用手册 https://gstreamer.freedesktop.org/documentation/ ...

  10. redhat 5的中文包安装

    中文包文件名.在iso文件的/server/文件夹下fonts-chinese-3.02-9.6.el5.noarch.rpmfonts-ISO8859-2-75dpi-1.0-17.1.noarch ...