主从复制使用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. OpenWRT 恢复出厂设置命令

    如果通过无线或者有线口无法连接到router,可以用恢复某些设置重新设置路由器. 1. 开机,等着一个工作灯亮的时候立即按下rest键2秒,然后就开始拼命闪烁,很好现在进入failsafe模式了. 2 ...

  2. 前端(各种demo):右侧导航栏的折叠和打开(不使用js)基础版和升级版

    1.给div设置定位. 复习一下—— css中position有五种属性: static:默认值,没有定位 absolute:绝对定位,相对于父级元素进行定位 relative:相对定位 fixed: ...

  3. ios 返回不会自动刷新页面问题

    在实际开发过程中,移动端的兼容性问题有很大的坑,安卓可以了ios不行,ios可以了安卓又失效了这样,其中ios的回退操作就是不会自动刷新页面,很烦! 常见的history.back() history ...

  4. 【NOIP2015提高组】 Day1 T3 斗地主

    [题目描述] 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中,牌的大小关系根据牌的数码表示如下:3<4& ...

  5. 突发小事件,USB接口问题

    昨天遇到的突发事件,突然USB接口全部瘫了,键盘鼠标全部不能用,换到别人电脑上可以,吓尿了,以为本子主板挂了,但是发现插U盘竟然可以识别而且可以打开,感觉可能是静电问题,果然,彻底关机,拔掉电池,然后 ...

  6. C基本类型

    C基本类型有: char:8位,可添加修改符signed或是unsigned short:16位,同有singed和unsigned int:32位,同有singed和unsigned long:在3 ...

  7. Linux下如何高效删除一个几十G的文本文件的最后一行或几行

    当我们在服务器端记录日志或文本数据时,有时候会有需要删除一个大文件的最后几行,这时如何才能高效实现. 上网浏览终于找到dd命令,亲测如下,删除一个32GB的日志文件最后100行仅需要4分钟 [root ...

  8. python爬虫xpath

    又是一个大晴天,因为马上要召开十九大,北京地铁就额外的拥挤,人贴人到爆炸,还好我常年挤地铁早已练成了轻功水上漂,挤地铁早已经不在话下. 励志成为一名高级测试工程师的我,目前还只是个菜鸟,难得有机会,公 ...

  9. ASP.NET Core中的OWASP Top 10 十大风险-SQL注入

    不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: https://dotnetcoretutorials.com/201 ...

  10. angular指令中@,=,&的区别

    当directive中的scope设置为一个对象的时候,该指令就有了一个独立的作用域,AngularJS提供了一种绑定策略用于隔离作用域和外部作用域进行通信. 1.@(or @attr) 使用@符号可 ...