主从复制使用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. 恶意软件Mirai换了个马甲 瞄上我国2亿多台IoT设备

    恶意软件Mirai换了个马甲 瞄上我国2亿多台IoT设备   想要起来时,一种沉重感阻碍着他,这是一种安全感:感觉到一张床为他铺好了,而且只属于他:想要静卧时,一种不安阻碍着他,把他从床上赶起来,这是 ...

  2. php实现伪静态的方法

    mod_rewrite是Apache的一个非常强大的功能,它可以实现伪静态页面.下面我详细说说它的使用方法 1.检测Apache是否支持mod_rewrite 通过php提供的phpinfo()函数查 ...

  3. fio2.1.10--HOWTO

    1.0 Overview and history    ------------------------ fio was originally written to save me the hassl ...

  4. MYSQL 总结

    1.数据库实质中访问的是 DBMC,数据库是一种存储介质 2.groub by 与 having 理解 group by 有一个原则,select后面的所有列中,没有使用聚合函数的列必须出现在 gro ...

  5. 使用vue-cli脚手架搭建简单项目框架

    1.首先已经安装了node,最好版本6以上. 2.安装淘宝镜像 大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像.这样就可以直接使用cnpm了. npm insta ...

  6. js页面间通信方法(storage事件)(浏览器页面间通信方法)

    在写页面的时候有时会遇到这样的需求,需要两个页面之间传递数据或者一个事件.这个时候,就需要用到我今天所要讲的storage事件,学习这个事件之前,需要先了解localStorage的用法.具体用法可以 ...

  7. 详解Java中的clone方法

    详解Java中的clone方法 参考:http://blog.csdn.net/zhangjg_blog/article/details/18369201/ 所谓的复制对象,首先要分配一个和源对象同样 ...

  8. 对Spring事务的一些误解

    提起spring事务,就会让人联想起四大基本特征,五个隔离级别,七大传播特性.相信大多数人都知道这些东西,但是知道是一回事情,能用好真的是另一回事了.在使用Spring事务的时候,我曾遇到过几个比较严 ...

  9. Spring、SpringMVC、SpringData + JPA 整合详解

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7759874.html ------------------------------------ ...

  10. ios 类的内部结构

    1. Class 和 Object 的定义 /// An opaque type that represents an Objective-C class. typedef struct objc_c ...