主从复制使用slaveof将Redis实例作为另一个Redis服务器的副本。

1) Redis复制是异步的,master可以配置成如果它连接的slave没有达到给定的数量,就停止接受写入。
2) 如果断线较少的时间,slave可以执行部分增量复制。需要配置合理的复制积压缓冲区大小来尽可能使用增量复制。
3) 复制是自动的,断线之后slave自动重连master。

slave配置:
slaveof <masterip> <masterport>

master可以设置密码:
masterauth <master-password>

当slave失去与master的连接,或者正在复制时:
1) 如果slave-serve-stale-data被设置为'yes'(默认),则slave将会仍然回复客户端的请求,可能是过时的数据,或者数据集可能只是空的,如果这是第一次同步。
2) 如果slave-serve-stale-data设置为'no',则slave将回复"正在同步"的错误,除了INFO和SLAVEOF命令。
slave-serve-stale-data yes

slave可以配置为可写,这对于存储一些短暂数据很有用,为啥是短暂?因为与master同步后,数据会被删除,所以不建议这样做。Redis 2.6以来slave默认是只读的。
注意:slave只读不代表可以随便暴露,因为它可以执行config、debug等暴露服务器信息的命令,当然你可以对这些命令进行重命名,但这么做总是不太保险
slave-read-only yes

异步复制策略:磁盘复制和无盘复制
-------------------------------------------------------
注意:无盘复制目前处于试验阶段
-------------------------------------------------------

slave第一次连接或者重新连接master的时候,不能实现增量复制,而是全量复制,master会发送rdb给slave,有以下两种方式:
1) 磁盘复制:master创建一个子进程将rdb文件写入磁盘,然后由父进程传输给slave
2) 无盘复制:master不写磁盘,而是创建一个子进程直接通过socket发送rdb文件

使用磁盘复制,当执行bgsave生成好了rdb文件但还没开始发送的时候,其他排队等待的slave也可以拿到这个rdb文件而不必等待重新生成
如果是无盘备份,一旦传输开始,其他slave排队等待传输完毕
使用无盘复制时,可配置多长时间(秒)有多少slave才开始传输,当磁盘比较慢而网络带宽比较大的时候,无盘复制是个不错的选择
repl-diskless-sync no

如果打开无盘复制,可以配置合理的延时来等待其他slave,因为一旦开始传输,后面过来的复制请求就要排队等待,默认5秒,设置为0则不等待
repl-diskless-sync-delay 5

slave会每隔repl-ping-slave-period(默认10秒)ping一次master,如果超过repl-timeout(默认 60秒)都没有收到响应,就会认为master挂了
repl-ping-slave-period 10
repl-timeout 60

我们可以控制在主从同步时是否禁用TCP_NODELAY。如果是yes,那么master会使用更少的TCP包和更少的带宽来向slave传输数据。
但是这可能会增加一些同步的延迟,大概会达到40毫秒左右。如果是no,那么数据同步的延迟时间会降低,但是会消耗更多的带宽。
repl-disable-tcp-nodelay no

缓冲积压队列,redis会把最近的命令放到队列里,供slave进行增量复制,设置得越大越有机会实现增量复制而非全量复制
repl-backlog-size 1mb

超过多长时间没有slave请求复制,缓冲积压队列将被释放
repl-backlog-ttl 3600

当master挂了,Redis Sentinel通过slave-priority来决定哪个slave接管成为master,最小的最优先,0代表永远不接管
slave-priority 100

配置master在M秒内有N个slave连接才可写,可以把其中一个值设置成0来关闭此功能,比如说10秒内有3台slave连接master才可写
min-slaves-to-write 3
min-slaves-max-lag 10

master通过info获取slave的ip地址和端口,当使用了端口转发或NAT的时候,需要配置IP地址映射
slave-announce-ip 5.5.5.5
slave-announce-port 1234

redis配置文件之复制的更多相关文章

  1. Redis 配置文件详解

    # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写)## 1k => 1000 bytes# 1kb => ...

  2. redis配置文件

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => bytes # 1kb => ...

  3. redis配置文件中文解释

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => bytes # 1kb => ...

  4. redis 配置文件解读

    # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k => 1000 bytes # 1kb = ...

  5. Redis 配置文件 redis.conf 项目详解

    Redis.conf 配置文件详解 # [Redis](http://yijiebuyi.com/category/redis.html) 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, ...

  6. Redis配置文件 翻译 V3.2版本

    # Redis配置文件例子. # # 注意:为了能读取到配置文件,Redis服务必须以配置文件的路径作为第一个参数启动 # ./redis-server /path/to/redis.conf # 关 ...

  7. Redis总结(六)Redis配置文件全解

    前面已经写了一些关于redis 的介绍,redis 的基本功能和用法,基本上都说了,有问题的可以去看看 http://www.cnblogs.com/zhangweizhong/category/77 ...

  8. 4 Redis 配置文件介绍

    2016-12-22 14:28:39 该系列文章链接NoSQL 数据库简介Redis的安装及及一些杂项基础知识Redis 的常用五大数据类型(key,string,hash,list,set,zse ...

  9. windows下redis 配置文件参数说明

    1.先看redis.windows.conf 文件 # Redis configuration file example # Note on units: when memory size is ne ...

随机推荐

  1. WordPress 4.8 安装配置教程 (基于 centos 7.3, php 7.0, mysql 5.7.19, nginx 1.12.1)

    最近想要整个 blog,记录自己工作.学习中的点滴.Wordpress 自然是首选,因为内容才是关键,所以也就不怕别人说太 low.网上大部份都是讲 wordpress 配合 apache 的安装教程 ...

  2. Android———最详细的系统对话框使用

    在实际应用开发中,用到系统对话框中的情况几乎是没有的.按开发流程来说,UI工程师都会给出每一个弹窗的样式,故而在实际开发中都是自定义弹窗的. 即使用到的地方不多,但是我们也是需要了解并且能熟练的运用它 ...

  3. C# To JAVA Converter Cracked ( 破解版 )

    C# To JAVA Converter v17.10.6  Cracked by X-Cracker 简介 C# To Java converter是一款将C#代码片段或者C#项目转换为JAVA的工 ...

  4. 【Win 10 应用开发】在代码中加载文本资源

    记得前一次,老周给大伙,不,小伙伴们介绍了如何填写 .resw 文件,并且在 XAML 中使用 x:Uid 标记来加载.也顺便给大伙儿分析了运行时是如何解析 .resw 文件的. 本来说好了,后续老周 ...

  5. EF6中使用事务的方法

    默认情况当你执行SaveChanges()的时候(insert update delete)来操作数据库时,Entity Framework会把这个操作包装在一个事务里,当操作结束后,事务也结束了. ...

  6. Java--谈一谈代理

    一.代理概念    代理在我们日常生活经常听到这个名词,比如我们想看下google我们需要找个代理服务器来帮我们一下,比如我们想买一个外国的什么东西需要在代购网站或者找朋友帮忙在外国买一下,用概念一点 ...

  7. Leetcode题解(25)

    77. Combinations 题目 分析:求给定数字n,k的组合数,方法是采用深度搜索算法,代码如下(copy网上代码) class Solution { public: void dfs77(v ...

  8. java Callable创建线程

    package com.java.concurrent; import java.util.concurrent.Callable; import java.util.concurrent.Execu ...

  9. lvs学习笔记

    本人身为一个网工,最近一直在工作中学习linux的相关知识.前短时间通过自查资料学习了lvs的相关内容,摘录部分整理后和大家分享,内容较多,较琐碎,望见谅!!! LVS 从Linux内核版本2.6起, ...

  10. js 根据身份证号获取性别,年龄,等

    $(function(){        $("#corpOwnerIdno").blur(function(){          //获取输入身份证号码             ...