Redis复制(replication)
介绍
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)的更多相关文章
- redis 系列22 复制Replication (下)
一. 复制环境准备 1.1 主库环境(172.168.18.201) 环境 说明 操作系统版本 CentOS 7.4.1708 IP地址 172.168.18.201 网关Gateway 172. ...
- redis 系列21 复制Replication (上)
一. 概述 使用和配置主从复制非常简单,每次当 slave 和 master 之间的连接断开时, slave 会自动重连到 master 上,并且无论这期间 master 发生了什么, slave ...
- Redis 复制、Sentinel的搭建和原理说明
背景: Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端) ...
- redis复制原理和应用
1.前言 说到分布式高可用,必然少不了复制,一来是为了做个冗余备份防止数据丢失,二来还可以达到分流来提高性能的目的.基本架构: 下面用M表示Master(主服务器),S表示Slave(从服务器),话不 ...
- redis系列--主从复制以及redis复制演进
一.前言 在之前的文章已经详细介绍了redis入门基础已经持久化相关内容包括redis4.0所提供的混合持久化. 通过持久化功能,Redis保证了即使在服务器宕机情况下数据的丢失非常少.但是如果这台服 ...
- 深入理解redis复制原理
原文:深入理解redis复制原理 1.复制过程 2.数据间的同步 3.全量复制 4.部分复制 5.心跳 6.异步复制 1.复制过程 从节点执行 slaveof 命令. 从节点只是保存了 slaveof ...
- Redis Persistent Replication Sentinel Cluster的一些理解
Redis Persistent Replication Sentinel Cluster的一些理解 我喜欢把工作中接触到的各种数据库叫做存储系统,笼统地说:Redis.Mysql.Kafka.Ela ...
- 搞懂Redis复制原理
前言 与大多数db一样,Redis也提供了复制机制,以满足故障恢复和负载均衡等需求.复制也是Redis高可用的基础,哨兵和集群都是建立在复制基础上实现高可用的.复制不仅提高了整个系统的容错能力,还可以 ...
- Redis 复制原理及特性
摘要 早期的RDBMS被设计为运行在单个CPU之上,读写操作都由经单个数据库实例完成,复制技术使得数据库的读写操作可以分散在运行于不同CPU之上的独立服务器上,Redis作为一个开源的.优秀的key- ...
- Redis 复制、Sentinel的搭建和原理说明(转)
Redis 复制.Sentinel的搭建和原理说明 转自:http://www.cnblogs.com/zhoujinyi/p/5570024.html. 背景: Redis-Sentinel是Re ...
随机推荐
- iOS面试2
转:http://www.cocoachina.com/ios/20151106/14069.html 作者:seedante 授权本站转载. 题目来自博客:面试百度的记录,有些问题我能回答一下,不能 ...
- 微信小程序 --- 文件的上传和下载
文件上传 / 文件下载 : wx.uploadFile
- Java项目工程化之项目构建工具Maven
欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...
- 写一个体验良好的git commit
一直在使用git也看过格式各样commit log , review 代码时最刺激的是看到这类 "." 应付差事,还有 "fix bug","fix& ...
- GraphicsMagick 号称图像处理领域的瑞士军刀
标签: librarydelegatesimage图像处理fontstiff 2012-09-13 10:15 2496人阅读 评论(0) 收藏 举报 分类: java技术(52) 简介 ...
- SDL结合QWidget的简单使用说明(2)
上篇主要讲了针对yv12流数据的渲染,但有时候我们显示视频还要求加一些信息,比如头像,昵称等等.一般的想法是在渲染窗口之上做一个小控件来负责: 但是很遗憾,你会发现你的控件被SDL的渲染完全遮住了,渲 ...
- public boolean onKeyDown(int keyCode, KeyEvent event)
@Override 2 public boolean onKeyDown(int keyCode, KeyEvent event) { 3 // TODO Auto-generated method ...
- centos7 安装python3.6 及模块安装演示
目录: 下载python3.6 安装python3.6的依赖 编译安装 更改链接 更改yum脚本的python依赖 修改gnome-weaktool配置文件 修改urlgrabber配置文件 1.下载 ...
- Openstack(二)基本环境准备--网络、时间、yum源等
2.1服务器版本安装 2.1.1服务器使用:centos7.4 + vm12 2.1.2重命名网卡: 传递内核参数 net.ifnames=0 biosdevname=0,以更改网卡名称为eth0,e ...
- springboot的相关信息
Maven的配置:zzp_settings.xml <?xml version="1.0" encoding="UTF-8"?> <setti ...