断线之后slave自动重连master则conf文件要是redis-server的率先独参数。基础工作应当就是了解它的使用说明书——redis.conf配置文件。

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

http://www.jianshu.com/p/41f393f594e8
  redis-server
运行时,可以直接在命令行中指定参数,也得以当布置文件被形容副参数。如果是运用了conf文件,则conf文件要是redis-server的首先个参数。如:

Redis在IT公司惨遭之使用率自不必说,这款活跃的开源软件还是还不断丰富和全面自身的力量,熟悉Redis和高频年前熟悉传统sql数据库一样化IT狗的必需技能有。作为使用者来说,基础工作应当就是是摸底其的采用说明——redis.conf配置文件。中文圈似乎对之布局文件并未完整的解读,本人就是召开一些微小的翻译工作,方便大家快速直达亲手吧。(文件来源redis版本
3.2.1
,还有多少起未完待续,想深入了解Redis实现代码的语句可以看无异论黄健宏编写的《redis设计和贯彻》)

1)
Redis复制是异步的,master可以配备成如它总是的slave没有直达给定的多寡,就止住接受写入。
2)
如果断线较少的时刻,slave可以尽有增量复制。需要配置合理之复制积压缓冲区大小来尽可能采取增量复制。
3) 复制是自动的,断线之后slave自动重连master。

./redis-server /usr/local/redis/redis.conf

######################### 引用
#########################

slave配置:
slaveof <masterip> <masterport>

同样、网络参数

# 不同redis
server可以以与一个模板配置当主配置,并援引其它配置文件用于本server的天性#
化设置
# include并无会见让CONFIG
REWRITE命令覆盖。但是主配置文件之抉择项会吃蒙。
# 想故意覆盖主配置的语句就是拿include放文件前,否则极好放末尾
**# include /path/to/local.conf
# include /path/to/other.conf

master可以安装密码:
masterauth <master-password>

bind

指定监听接口。redis默认监听所有可用接口。使用bind,可以监听指定的一个要多个接口,如:

bind 192.168.1.100 10.0.0.1
或者
bind 127.0.0.1

**######################### 网络
#########################

当slave失去与master的连接,或者正在复制时:
1)
如果slave-serve-stale-data被装置也’yes’(默认),则slave将会晤仍然回复客户端的请求,可能是不合时宜的数,或者数据集可能才是拖欠的,如果当时是率先糟糕同。
2)
如果slave-serve-stale-data设置也’no’,则slave将恢复”正在共同”的失实,除了INFO和SLAVEOF命令。
slave-serve-stale-data yes

protected-mod

保护模式是一律叠安全保护层,以避免Redis实例在internet上开拓,被看并且为采取。
  保护模式开启后,如果没下“bind”指令明确绑定到同样组地点及redis
server没有布置密码。服务端只受来自回环口127.0.0.1 和 Unix
域套接字的接连

保护默认默认开启:

protected-mode yes

# 不指定bind的话redis将会晤监听所有网络接口。这个布局是早晚要指定的。
# Examples:
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1 ::1
# 下面这个布局是仅同意地方客户端访问。
bind 127.0.0.1

slave可以安排也而写,这对于仓储一些浅数据充分有因此,为甚是指日可待?因为跟master同步后,数据会被删除,所以未建议这样做。Redis
2.6以来slave默认是单念的。
顾:slave只念不意味着可以不管暴露,因为她好推行config、debug等暴露服务器信息之通令,当然你得对这些命令进行双重命名,但这么做总是不极端保险
slave-read-only yes

port

点名端口,默认6379。如果值为0,则非以TCP Scoket上监听

port 6379

#
是否打开保护模式。默认开启,如果没有设置bind项的ip和redis密码的话,服务将只有同意地方访
问。
protected-mode yes

异步复制策略:磁盘复制与无盘复制

tcp-backlog

** TCP listen() backlog**

TCP socket 服务支付的4单步骤
socket->bind->listen->accept。调用listen函数时,有一个backlog参数.

int listen(int sockfd, int backlog);

于Linux中backlog表示已就(ESTABLISHED)且未accept的行大小。

各个秒高产出的条件遭受,为了避免客户端连接慢的问题,需要一个比高之backlog
的价值。注意,Linux 内核 默认将该截断为 /proc/sys/net/core/somaxconn
的价值,确保增长somaxconn和tcp_max_syn_backlog的值为取得所用的成效。

# 端口设置,默认为 6379
# 如果port设置为0 redis将未会见监听tcp socket
port 6379

只顾:无盘复制目前处在试验阶段

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

unixsocket

指定Unix Socket路径。没有默认值,因此没有点名时,Redis不见面在Unix
Socket上监听

unixsocket /tmp/redis.sock
unixsocketperm 700    #socket文件权限

#
在高并发环境下欲一个高backlog值来避免慢客户端连接问题。注意Linux内核默默将此值减小到/proc/sys/net/core/somaxconn的价值,所以需要承认增大somaxconn和tcp_max_syn_backlog
两独价值来上需要之机能。
tcp-backlog 511

timeout

客户端空闲N秒后虽说关闭连接(0 表示禁用)

timeout <Num>

默认值:

timeout 0

#
指定用来监听Unix套摹接字之路子。没有默认值,没有点名的事态下Redis不见面监听Unix
socket
# unixsocket /tmp/redis.sock
# unixsocketperm 700

tcp-keepalive

TCP keepalive。如果非零,使用SO_KEEPALIVE在不到的场面下向客户端发送TCP
ACK。有三三两两只好处:

  1. 检测 死亡的peer
  2. 从今中间的网设施的角度来拘禁,保持连续存活

默认值(以秒为单位):

tcp-keepalive 300

# 客户端空闲多少秒后关连接(0啊未关)timeout 0#
tcp-keepalive设置。如果不零,则装SO_KEEPALIVE选项来向空闲连接的客户端发送ACK,用途如下:
# 1)能够检测无响应的对端
# 2)让该连中间的网设施接头者连续还存世
# 在Linux上,这个指定的值(单位秒)就是发送ACK的日子距离。
# 注意:要关闭这个连续要简单加倍之这日子价值。
# 在任何基础上者时间距离由本配置决定#
从redis3.2.1开始默认值为300秒
tcp-keepalive 300

次、一般参数

######################### 通用
#########################

include

含蓄其他安排文件。

include /path/to/other.conf

# 是否拿Redis作为医护进程运行。如果需要的话配置成’yes’
# 注意安排成守护进程后Redis会将经过号写副文件/var/run/redis.pid
daemonize no

daemonize

默认值:

daemonize no

是不是当后台进程启动。默认值为no不开启,如果急需开则装也yes。一般为yes。

#
是否经过upstart或systemd管理守护进程。默认no没有劳动监督,其它选项有upstart,
systemd, auto
**supervised no

supervised

supervised no

# pid文件于redis启动时创造,退出时去除。最佳实践也布局该项。 pidfile /var/run/redis_6379.pid**

pidfile

用作后台进程启动时,将经过pid
写副文件。当redis作为后台进程启动时,如果无明白指定pid file,则默认为
“/var/run/redis.pid”

默认指定值:

pidfile /var/run/redis_6379.pid

# 配置日志级别。选项有debug, verbose, notice, warning
loglevel notice

loglevel notice

日记等级

#
日志名称。空字符串代表业内输出。注意要redis配置也后台进程,标准输出中信息会发送至/dev/null
**logfile “”

logfile

日记文件路径

logfile "/var/log/redis.log"

# 是否启动系统日志记录。 # syslog-enabled no

databases

安数据库的number。默认数据库是 DB 0,可以择采取SELECT
<dbid>在每个连的基础及用不同的 dbid是0和’数据库’-1之间的数字

# 指定系统日志身份。 # syslog-ident redis

三、持久化

snapshotting,快照、持久化。即将DB保存至磁盘上。开启持久化使用save命令

# 指定syslog设备。必须是user或LOCAL0 ~ LOCAL7之一。 # syslog-facility local0

# 设置数据库个数。默认数据库是 DB 0
# 可以经过SELECT where dbid is a number between 0 and
‘databases’-1为每个连使用不同之数据库。
databases 16

save

save <seconds> <changes>

若指定时间(秒为单位)内指定的形容操作次数发生将见面保留DB

默认值:

save 900 1 #表示900秒内少1个key有变动
save 300 10 #表示300秒内至少10个key有变动
save 60 10000 #表示60秒内至少10000个key有变动

倘无欲启用持久化,则将”save”指令注释即可,或者用如下方式写:

save ""

######################### 备份 
#########################
# 持久化设置:
# 下面的例子将见面进行管数据勾勒副磁盘的操作:
#  900秒(15分钟)之后,且至少1次变更
#  300秒(5分钟)之后,且至少10次变更
#  60秒之后,且至少10000次变更
# 不写磁盘的语就是把有 “save” 设置注释掉就执行了。
#
通过丰富相同久带空字符串参数的save指令也会移除之前所有配置的save指令,如:
save “”
save 900 1
save 300 10
save 60 10000

# 默认情况下如点配置的RDB模式被且最后一次等的保存失败,redis
将已接受写操作,让用户了解问题之发。
# 如果后台保存进程再启航工作了,redis
也拿机关的兴写操作。如果发任何监控措施吗只是关闭。
stop-writes-on-bgsave-error yes**

stop-writes-on-bgsave-error

默认情况下,如果启用了RDB快照,Redis将停止接受写入(至少一个保存点)并且最新的后台保存将黄。这将使用户发现及多少未会见不错的持久有被磁盘上,否则有或无人会专注到有,灾难就会见生。
  如果后台的save过程再开始工作,Redis会再次自动允许写入。但是,如果你设置了针对性Redis服务器的不错监视和持久性,您可能要禁用此功效,以便Redis即使发生磁盘问题、权限等等仍然照常工作

默认:

stop-writes-on-bgsave-error yes

#
是否在备份.rdb文件时是否用LZF压缩字符串,默认设置为yes。如果想节约cpu资源得以管其装为no。
rdbcompression yes

rdbcompression

转储 .rdb 文件时是不是动LZF进行削减,默认值为yes。

默认值:

rdbcompression yes

如当保存子节点时要节约CPU,将那安为”no”,但是要起可减掉的值或者键,则数集将越来越大。

#
因为本5底RDB有一个CRC64算法的校验和在了文件的结尾。这将如文件格式更加可靠,
#
但在生育及加载RDB文件时,这生一个性质消耗(大约10%),可以合它来获得最好的性。
#
生成的倒闭校验的RDB文件发出一个0底校验和,它以晓加载代码跳了检查rdbchecksum
yes
# rdb文件名称
dbfilename dump.rdb

rdbchecksum

当加载与存储RDB文件时展开校验。这要格式更能够增进数据安全,但是会损耗一定性能(大约
10%),如果欲得到最特别性,则好禁止这个选项。

默认值:

rdbchecksum yes

# 备份文件目录,文件称就是端的 “dbfilename”
的价。累加文书也放这里。
# 注意你这里指定的总得是目录,不是文件称。
dir /Users/wuji/redis_data/

dbfilename

指定rdb文件名

######################### 主从同步
#########################

dir

rdb文件存放路径

# 主从一头部署。
# 1)
redis主从并是异步的,但是可配备于尚未点名slave连接的情状下如master停止写副数据。
# 2) 连接中断一定时间外,slave可以实行有数据还联合。
# 3) 同步是机关的,slave可以活动还连还同数据。
# slaveof <masterip> <masterport>
# master连接密码
# masterauth <master-password>
#
当一个slave失去与master的连续,或者联合在开展着,slave的行事发出点儿种植可能:
# 1) 如果 slave-serve-stale-data 设置也 “yes”
(默认值),slave会继续响应客户端请求,可能是正规数据,也说不定是还不曾获价值的空数据。
# 2) 如果 slave-serve-stale-data 设置为
“no”,slave会回复”正在从master同步(SYNC with master in
progress)”来处理各种求,除了 INFO 和 SLAVEOF 命令。
slave-serve-stale-data yes

持久化示例

save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename "dump6379.rdb"
dir "/usr/local/redis-3.2.9/data"

#
你得配备salve实例是否受写操作。可写的slave实例可能针对存储临时数据比较起因此(因为写入salve#
的数量在同master同步之后用很容被删去),但是若客户端由于配备错误在写入时为或出部分问题。
# 从Redis2.6默认所有的slave为就念
#
注意:只念之slave不是为着暴露于互联网及不可信的客户端而计划之。它就是一个备实例误用的保护层。
#
一个单纯念的slave支持具有的军事管制命令比如config,debug等。为了限制而可以据此’rename-command’来隐藏所有的管制和危急命令来加强只读slave的安全性。
slave-read-only yes
# 同步策略: 磁盘或socket,默认磁盘方式
repl-diskless-sync no

四、复制

翻开复制利用的是 slaveof 命令。只以起机上才用slaveof进行布置。

#
如果无磁盘同步方式拉开,可以安排并延迟时间,以待master产生子进程经过socket传输RDB数据让slave。
# 默认值为5秒,设置也0秒则每次传输无延迟。
repl-diskless-sync-delay 5

slaveof

slaveof <masterIP> <masterPort>

# slave因指定的工夫距离为master发送ping请求。默认10秒。
# repl-ping-slave-period 10
# 同步的过时间
# 1)slave在和master SYNC期间产生大气多少传,造成过
# 2)在slave角度,master超时,包括数据、ping等
# 3)在master角度,slave超时,当master发送REPLCONF ACK pings#
确保这个价大于指定的repl-ping-slave-period,否则在基本间流量不强时每次都见面检测及过期
# repl-timeout 60
# 是否以slave套接字发送SYNC之后禁用 TCP_NODELAY
#
如果选yes,Redis将祭还不见的TCP包和拉动富来向slaves发送数据。但是及时将如数据传到slave上有推,Linux内核的默认配置会及40毫秒。
# 如果选择no,数据传至salve的推迟将会晤削减而如使重复多之带富。
#
默认我们见面否没有顺延做优化,但高流量情况或核心之间的跳数过多时,可以安装也“yes”。
**repl-disable-tcp-nodelay no

masterauth

如果master使用了 requirepass 指令,则client 连接
master时需要动用密码。在主从复制中,使用 masterauth
来拓展认证,后面接的就算是接二连三master 时欲的密码。

masterauth master_password

#
设置数据备份的backlog大小。backlog是一个slave在一段时间内断开连接时记录salve数据的缓冲,所以一个slave在重连接时,不必要全量的合,而是一个增量同步就足够了,将于断开连接的当即段#
时间内将slave丢失的一部分数据传送给她。
#
同步的backlog越怪,slave能够进行增量同步并且同意断开连接的时刻就越长。
# backlog只分红一次而至少得一个slave连接。
# repl-backlog-size 1mb

#
当master在一段时间内不再与其他slave连接,backlog将见面释放。以下选项配置了打最后一个
# slave断开起计时多少秒后,backlog缓冲以会见自由。
# 0代表绝不释放backlog
# repl-backlog-ttl 3600

slave-serve-stale-data

当从机与主机断开连接时,或者当复制仍于开展经常,从机可以动用少种不同之主意:
1)如果slave-serve-stale-data设置也“yes”(默认),则slave仍然会扭转复client请求,
尽管数额或许会见面世过或一旦当时是首先赖同,数据集可能为空。
2)如果slave-serve-stale-data设置为“no”,则从机将还原错误“SYNC with
master in progress”到独具品种的一声令下,除了 INFO和SLAVEOF 命令。

默认值:

slave-serve-stale-data yes

#
slave的先期级是一个平头展示在Redis的Info输出被。如果master不再正常干活了,sentinel将因此其来摘取一个slave提升为master。
#
优先级数字略之salve会优先考虑提升为master,所以像有三只slave优先级分别吗10,100,25,sentinel将甄选优先级最小数字为10底slave。
#
0作为一个奇之优先级,标识是slave不可知看做master,所以一个预级为0的slave永远不会见受#
sentinel挑选提升为master。
# 默认优先级为100
slave-priority 100**

slave-read-only

安排slave是否只读。

默认值:

slave-read-only yes

一般来说是一个安排了slave 只读的实例,这种景象下插入数据就是会发出误提示。

[root@slave2 src]# /usr/local/redis-3.2.9/src/redis-cli -h 172.16.7.192 
172.16.7.192:6379> append test 'test'
(error) READONLY You can't write against a read only slave.

#
如果master少于N个延时小于等于M秒的早已连接slave,就得停收取写操作。
# N个slave需要是“oneline”状态。
#
延时是因秒为单位,并且要低于等于指定值,是自最后一个自slave接收至的ping(通常列秒发送)开始计数。
# 该选择项无保险N个slave正确并写操作,但是限制数量丢失的窗口期。
# 例如至少用3单延时小于等于10秒的slave用底的吩咐:
# min-slaves-to-write 3
# min-slaves-max-lag 10

repl-diskless-sync

复制同步策略: disk 或者 soket
瞩目: 磁盘复制还于测验等
  新的slave
和重新连接的slave不可知继承复制过程,只是收取差异。需要开的即使是”full
synchronization”,一个RDB 文件于master上传到slave,
以此传输通过个别栽不同之方法发生:
1) Disk-backed:redis master 创建一个初的经过将RDB 文件写副磁盘,
接着,这个文件给生父进程仍增量的方传输到slave上。
2) Diskless; redis master 创建了一个历程一直以写RDB
文件传为slave的socke,中间经过不欲点到磁盘

用diskless复制时,开始传输之前会等待一段时间(该时空以秒为单文,可安排),希望多单slave主机到达同时传输可以并行化。

应用慢磁盘和便捷(大带宽)网络,无盘复制更好之办事。

默认值

repl-diskless-sync no 

默认使用磁盘方式

# 两者之一设置为0以禁用这个功能。
# 默认 min-slaves-to-write 值是0(该意义禁用)并且 min-slaves-max-lag
值是10。

repl-diskless-sync-delay

如果以磁盘同步方式拉开,可以安排并延迟时间,以等待master产生子进程经过socket传输RDB数据为slave。默认值为5秒,设置也0秒则每次传输无延迟。

默认值

repl-diskless-sync-delay 5

######################### 安全
#########################

repl-ping-slave-period

slave按照预定义时间距离为master 发送
PINGs。通过repl-ping-slave-period 可以变更这个时距离。默认值为10s

# repl-ping-slave-period 10

# 要求客户端在处理外命令时犹如证实身份及密码。
# requirepass foobared
# 命令重命名
# 在共享环境下,可以啊危险命令改变名字。比如,你得吗 CONFIG
改个其他未绝爱猜到的名字,这样内部的家伙还可用。
# 例如:
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
# 也得通过更名为空字符串来完全禁用一个限令
# rename-command CONFIG “”
# 请注意:改变命令名字给记录到AOF文件或者给传送至打服务器可能出问题。

repl-timeout

其三栽状态看复制超时:
1)slave角度,如果以repl-timeout时间内没有收到master SYNC传输的rdb
snapshot数据.
2)slave角度,在repl-timeout没有接过master发送的数据包或者ping。
3)master角度,在repl-timeout时间没收取REPCONF ACK确认信息。
  当redis检测到repl-timeout超时(默认值60s),将会晤倒闭主从之间的连接,redis
slave发起重新建立基本连接的呼吁。对于内存数据集比较老的系统,可以增大repl-timeout参数。确保这价过指定的repl-ping-slave-period,否则在中心间流量不赛时每次都见面检测及过。

# repl-timeout 60

######################### 限制
#########################

repl-disable-tcp-nodelay

是不是在slave套接字发送SYNC之后禁用
TCP_NODELAY。如果选择yes,Redis将利用还少之TCP包和带富来为slaves发送数据。但是及时将设数码传至slave上闹延期,Linux内核的默认配置会达成40毫秒。
如果选no,数据传到salve的延将会见缩减只是一旦下还多之带动富。默认我们见面吗没有顺延做优化,但高流量情况还是基本之间的跳数过多时,可以设置也“yes”。

默认值

repl-disable-tcp-nodelay no

#
设置极端多而且连接的客户端数量。默认这个范围是10000个客户端,然而一旦Redis服务器不能够部署
#
处理公事之限制数来满足指定的值,那么最好可怜的客户端连接数就吃装成时文件限制数减32(因为Redis服务器保留了部分文书讲述吻合作为中以)
# 一旦达这范围,Redis会关闭所有新连并发送错误’max number of
clients reached’
**# maxclients 10000

repl-backlog-size

装数据备份的backlog大小。backlog是一个slave在一段时间内断开连接时记录salve数据的缓冲,所以一个slave在重复连接时,不必要全量的一路,而是一个增量同步就够用了,将以断开连接的马上段时日内把slave丢失的局部数据传送给其。同步的backlog越老,slave能够进行增量同步并且同意断开连接的时光哪怕越长。backlog只分红一涂鸦以至少用一个slave连接。

默认值

# repl-backlog-size 1mb

#
不要使用比较设置的上限更多之内存。一旦内存以及上限,Redis会根据选定的回收策略(参见:maxmemmory-policy)删除key。
# 如果坐除去策略Redis无法删除key,或者政策设置也
“noeviction”,Redis会回复需要还多内存的错误信息给命令。例如,SET,LPUSH等等,但是会持续响应像Get这样的只有念命令。
# 在利用Redis作为LRU缓存,或者为实例设置了硬性内存限制的时(使用
“noeviction” 策略)
的下,这个选项通常从那个有因此之。
#
警告:当起多独slave连上齐内存上限时,master为同步slave的出口缓冲区所用外存不合算在行使内存中。这样当移除了key时,就非会见因网络问题
/
重新联合事件触发移除key的巡回,反过来slaves的输出缓冲区充满了key被移除的DEL命令,这将触及删除更多之key,直到这个数据库完全让清空了。
#
总之,如果您得增大多只slave,建议乃设置一个粗有些maxmemory限制,这样系统就是会见发空暇之内存作为slave的输出缓存区(但是要尽老外存策略设置为”noeviction”的话语就是从未必要了)
# maxmemory <bytes>**

repl-backlog-ttl

当master于一段时间内不再与外slave连接,backlog将会晤放出。以下选项配置了起最后一个slave断开起计时多少秒后,backlog缓冲以会晤放出。0表示不要释放backlog

默认值

# repl-backlog-ttl 3600
  • slave-priority
      slave的预先级是一个整数展示在Redis的Info输出受。如果master不再正常办事了,sentinel将就此她来选择一个slave提升为master。优先级数字略之salve会优先考虑提升为master,所以像有三独slave优先级分别吗10,100,25,sentinel将选优先级最小数字为10之slave。0作为一个异常的优先级,标识是slave不可知同日而语master,所以一个先行级为0的slave永远不会见被sentinel挑选提升为master。默认优先级为100。

默认值

slave-priority 100

# 最要命内存策略:如果达内存限制了,Redis如何抉择去key。
# volatile-lru -> 根据LRU算法删除设置过时之key
# allkeys-lru -> 根据LRU算法删除任何key
# volatile-random -> 随机移除设置过过时之key
# allkeys-random -> 随机移除任何key
# volatile-ttl -> 移除即将过的key(minor TTL)
# noeviction -> 不移除别key,只回一个状错误
#
注意:对具备策略来说,如果Redis找不顶当的可以去除的key都见面于描绘操作时返回一个荒谬。#
目前为止涉及的命:set setnx setex append incr decr rpush lpush rpushx
lpushx linsert lset rpoplpush sadd sinter sinterstore sunion sunionstore
sdiff sdiffstore zadd zincrby zunionstore zinterstore hset hsetnx hmset
hincrby incrby decrby getset mset msetnx exec sort
# 默认策略:
# maxmemory-policy noeviction

min-slaves-to-write <N>

#
LRU和极小TTL算法的贯彻都未是大可靠,但是那个类似(为了省内存),所以你得为此样本量做检测。
例如:默认Redis会检查3个key然后取最老的不胜,你得经下的安排指令来装样本的个数。
# 默认值为5,数字更是充分结果越规范但是会损耗又多CPU。
# maxmemory-samples 5

min-slaves-max-lag <M>

要是总是到master的
slave少于N个,延时小于等于M秒,master就可以歇收取写操作。N个slave需要是“oneline”状态,延时是坐秒为单位,并且要低于等于指定值,是由最后一个由slave接收到之ping(通常列秒发送)开始计数。该选项无包N个slave正确并写操作,但是限制数量丢失的窗口期。
诸如至少用3个延时小于等于10秒的slave用脚的吩咐:

默认值

# min-slaves-to-write 3
# min-slaves-max-lag 10

马上简单单选项之意是
只有当连接到master的slave数为3,且master与slave的延时低于等于10秒,master才会接受写。

两者有设置也0以禁用这个作用。默认 min-slaves-to-write
值是0(该意义禁用)并且 min-slaves-max-lag 值是10。

######################### APPEND ONLY MODE
#########################

slave-announce-ip

#
默认情况下,Redis是异步的管数据导出到磁盘上。这种模式在诸多使里既够好,但Redis进程来问题还是断电时或者导致一段时间的勾操作丢失(这有赖于配置的save指令)。
#
AOF是一样栽提供了重可靠的替代持久化模式,例如利用默认的数码写入文件策略(参见后面的布置)。
#
在遇见比如服务器断电或只写情况下Redis自身进程产生题目而操作系统随健康运行等突发事件时,Redis能惟少1秒的状操作。
# AOF和RDB持久化能以启动以不见面有题目。
#
如果AOF开启,那么以开行时Redis将加载AOF文件,它更能保证数据的可靠性。
appendonly no

slave-announce-port

# AOF文件名(默认:”appendonly.aof”)
appendfilename “appendonly.aof”

五、安全

  • requirepass

安客户端认证密码,即客户端连接时需要正确的密码才行。

requirepass passwordhahah

留神:因为redis处理的进度挺尽快,因此密码复杂度必须使大,否则极容易爆破

  • rename-command

令重命名。此举是为了安全性。

要是将CONFIG命令设置成十分复杂的字符串:

rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

瞩目:命令重命名将会记录及AOF文件(持久化相关,后续会波及)中或是以那个传输至slaave中一经致一部分问题。

# fsync()
系统调用告诉操作系统将数据勾勒及磁盘上,而未是齐重新多之数据上输出缓冲区。
# 有些操作系统会真将多少立马刷到磁盘上;有些则会抢去品味这样做。
# Redis支持三种植不同之模式:
# no:不要马上刷,只有在操作系统需要刷的时节再刷。比较快。
# always:每次写操作都立写副到aof文件。慢,但是绝安全。
# everysec:每秒写一浅。折中方案。
# 默认的 “everysec”
通常来说会于快跟数码安全性之间赢得比较好之平衡。
# appendfsync always
appendfsync everysec
# appendfsync no

六、限制

# 如果AOF的旅策略设置成 “always” 或者
“everysec”,并且后台的存储进程(后高存储或摹写入AOF
日志)会生过多磁盘I/O开销。某些Linux的布局下会如Redis因为
fsync()系统调用而死很漫长。
# 注意,目前对是场面尚从来不全面修正,甚至不同线程的 fsync()
会阻塞我们一道的write(2)调用。
# 为了化解这个问题,可以据此脚这个选项。它好以 BGSAVE 或 BGREWRITEAOF
处理时拦fsync()。
#
这便代表要有子进程在进展封存操作,那么Redis就处于”不可同步”的状态。
#
这实在是说,在极度差之场面下或者会见丢弃30秒钟的日记数据。(默认Linux设定)
#
如果将这装置成”yes”带来了延期问题,就保持”no”,这是保留持久数据的极安全的措施。
no-appendfsync-on-rewrite no

maxclients

意:设置同一时间client的连年数,默认值为10000,但是要Redis服务器错误会配置过程文件限制以允许指定的限制将许的客户端的无限要命数量设置也当前文件限制减32(因为Redis保留了一部分之中以的文件讲述吻合)。
假若上限,Redis将关门所有新连并发送一个误’max number of clients
reached’。

# maxclients 10000

# 自动重写AOF文件。如果AOF日志文件增大到指定百分比,Redis能够透过
BGREWRITEAOF 自动重写AOF日志文件。#
工作规律:Redis记住上次重写时AOF文件之轻重缓急(如果重新开后尚从未写操作,就直接用启动时之AOF大小)
#
这个原则大小与手上大小做比。如果手上高低超过指定比例,就会见触发重写操作。你还需指定给再次写日记的不过小尺寸,这样避免了齐指定百分比较不过尺寸还异常有些的气象还要重写。
# 指定百分比乎0会禁用AOF自动重新写特性。
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

maxmemory

装好运用的绝特别内存(单位字节)。当Redis使用内存超过限制值后,Redis将由此回收策略尝试换除了key。(查看maxmemory-policy)
  如果redis根据回收策略不可知更换除了key,或者政策设置以
‘noeviction’,对于以会晤下还多内存的命令,Redis
会开始回到错误,比如SET
、LPUSH等等操作;但是会继续响应只读命令的求,比如GET
  当以Redis作为LRU缓存或为实例设置硬盘内存限制(使用’noeviction’策略)时,此选项通常十分有因此。
  警告:当起差不多只slave连上上内存上限时,master为同步slave的出口缓冲区所需要外存不划算以运用内存中。这样当移除了key时,就未会见坐网络问题
/
重新联合事件触发移除key的大循环,反过来slaves的输出缓冲区充满了key被移除的DEL命令,这将沾删除更多的key,直到这个数据库完全受清空了。
  总之,如果您得增大多单slave,建议您设置一个微小maxmemory限制,这样系统就见面来空暇之内存作为slave的输出缓存区(但是要尽老外存策略设置为”noeviction”的说话虽不曾必要了)

  • 默认值

# maxmemory <bytes>

#
如果安也yes,如果一个以大被截断的AOF文件为redis启动时加载进内存,redis将会晤发送日志通知用户。如果设置也no,erdis将会见拒绝启动。此时需要为此”redis-check-aof”工具修复文件。
aof-load-truncated yes

maxmemory-policy

顶酷外存策略:如果上内存限制了,Redis如何选去key。

volatile-lru -> 根据LRU算法删除设置过时的key
allkeys-lru -> 根据LRU算法删除任何key
volatile-random -> 随机移除设置过过时的key
allkeys-random -> 随机移除任何key
volatile-ttl -> 移除即将过的key(minor TTL)
noeviction -> 不移除别key,只回去一个形容错误
  注意:对富有策略来说,如果Redis找不至适当的得去除的key都见面以形容操作时返回一个错。目前为止涉及的命令:set
setnx setex append incr decr rpush lpush rpushx lpushx linsert lset
rpoplpush sadd sinter sinterstore sunion sunionstore sdiff sdiffstore
zadd zincrby zunionstore zinterstore hset hsetnx hmset hincrby incrby
decrby getset mset msetnx exec sort

  • 默认值

# maxmemory-policy noeviction

######################### 集群
#########################

maxmemory-samples

LRU和最好小TTL算法的贯彻都未是充分确切,但是老类似(为了省内存),所以你得为此样本量做检测。
例如:默认Redis会检查3个key然后取最老的生,你得经过下面的布局指令来装样本的个数。

# 只有被了以下选项,redis才能够成集群服务之均等有
# cluster-enabled yes

默认值为5,数字更是充分结果越规范但是会损耗又多CPU。

  • 默认值

# maxmemory-samples 5

#
配置redis自动生成的集群配置文件称。确保同等系统中运作的各redis实例该配置文件不要重名。
# cluster-config-file nodes-6379.conf

七、APPEND ONLY MODE

Redis 持久化方式有少数种植,RDB和AOF。默认使用RDB
  Redis默认使用异步转储磁盘上之数码,这种模式在多数应用程序中可以十分好地干活,但是当redis进程或电源
中断后,可能会见促成几分钟的描绘副数据丢失(具体在 save point)
  Append Only
File(AOF)提供了提供了持久性更强之模式,如使用默认数据fsync策略(参见后面的布局),
在碰到比如说服务器断电或一味写情况下Redis自身进程有问题可操作系统随健康运转相当突发事件时,Redis可能才少1秒的数量。
  AOF和RDB可以又用,如果AOF也开启了,Redis将加载AOF,因为AOF文件提供了再也好的持久性保证。

# 集群节点超时毫秒数。超时的节点将吃视为不可用状态。
# cluster-node-timeout 15000

appendonly

是否被AOF,AOF 默认关闭。

  • 默认值

appendonly no

#
如果数量最旧,集众多中之匪可用master的slave节点会避免成为备用master。如果slave和master失联时间跨:
 (node-timeout * slave-validity-factor) + repl-ping-slave-period
则未会见为提升为master。
# 如node-timeout为30秒,slave-validity-factor为10, 默认default
repl-ping-slave-period为10秒,失联时间超过310秒slave就非会见化master。
#
较生的slave-validity-factor值可能允许包含了原来数据的slave成为master,同时于小之价值可能会见阻止集群选举出新master。
#为达到至极充分限度的高可用性,可以装为0,即slave不管和master失联多久都得升官为master
# cluster-slave-validity-factor 10

appendfilename

AOF 文件名

  • 默认值

appendfilename "appendonly.aof"

appendfilename 只属文件称,而休应该是都路线,AOF文件会默认在设置主目录。

#
只有在前头master有其它指定数量的行事状态下之slave节点时,slave节点才会升迁为master。默认为1(即该集群至少发生3单节点,1
master+2
slaves,master宕机,仍有另外1独slave的情形下中1个slave可以提升)
# 测试环境可装为0,生成环境遭受至少设置也1
# cluster-migration-barrier 1

appendfsync

fsync()
系统调用告诉操作系统将多少勾勒及磁盘上,而未是等还多之数上输出缓冲区。有些操作系统会真正把数量及时刷到磁盘上;有些则会快去品味这样做。

Redis支持三种不同的模式:
no:不要立即刷,只有当操作系统需要刷的时段再刷。比较快。
always:每次写操作都这写副到aof文件。慢,但是最为安全。
everysec:每秒写一不良。折中方案。
默认的everysec普普通通来说会于速和数量安全性之间赢得比较好之平衡。

  • 默认值

appendfsync everysec

# 默认情况下一旦redis集群如果检测及至少有1个hash
slot不可用,集群将告一段落查询数据。
# 如果具有slot恢复则集群自动还原。
# 如果要集群部分可用情况下以只是提供查询服务,设置也no。
# cluster-require-full-coverage yes

no-appendfsync-on-rewrite

如果AOF的共策略设置成 “always” 或者
“everysec”,并且后台的贮存进程(后令存储或摹写入AOF
日志)会生出众多磁盘I/O开销。某些Linux的布下会要Redis因为
fsync()系统调用而围堵很悠久。
顾,目前本着是情还从来不健全修正,甚至不同线程的 fsync()
会阻塞我们一同的write(2)调用。
以解决这个题目,可以就此脚是选项。它可以在 BGSAVE 或BGREWRITEAOF
处理常挡住fsync()。这即代表一旦有子进程在进展封存操作,那么Redis就处在”不可同步”的状态。这实质上是说,在极其差之情景下可能会见扔30秒钟的日记数据。(默认Linux设定)
假使把这个设置成”yes”带来了延期问题,就保障”no”,这是保存持久数据的绝安全之法门。

  • 默认值

no-appendfsync-on-rewrite no

######################### 慢查询日志
#########################

自动重写AOF文件

要AOF日志文件增大至指定百分比,Redis能够透过 BGREWRITEAOF
自动重写AOF日志文件。
办事原理:Redis记住上次重写时AOF文件的大大小小(如果重复开后还尚未写操作,就径直用启动时的AOF大小)
其一条件大小及时高低做比较。如果手上大小超过指定比例,就见面触发重写操作。你还欲指定为再度写日记的无比小尺码,这样避免了达标指定百分比较不过尺寸依然十分有些之场面还要重写。
点名百分比吧0会禁用AOF自动还写特性。

  • 默认值

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

#
慢查询日志,记录超过多少微秒的询问命令。查询的尽时未包客户端的IO执行与网通信时间,只是查询命令执行时间。
# 1000000对等让1秒,设置为0虽然记录有命令
slowlog-log-slower-than 10000

aof-load-truncated

倘若设置为yes,如果一个以大被截断的AOF文件给redis启动时加载进内存,redis将见面发送日志通知用户。如果设置为no,erdis将会晤拒绝启动。此时内需为此”redis-check-aof”工具修复文件。

  • 默认值

aof-load-truncated yes

# 记录大小,可透过SLOWLOG RESET命令重置
slowlog-max-len 128

相关文章