Redis的配置文件详解(一)
“ 想要玩好redis,首先要搞懂他的配置”
NETWORK:网络连接
—
# bind 127.0.0.1 192.168.86.129
绑定Ip,指定可以连接本实例Redis的ip。
如果注释(删掉)则任意IP都可以连接。
# protected-mode yes
禁止外网访问redis,如果启用了,即使注释掉了bind 127.0.0.1,再访问redisd时候还是无法连接的。
它启用的条件有两个,第一是没有使用bind,第二是没有设置访问密码。
# port 6379
指定Redis的端口
GENERAL:常规
—
# daemonize no
是否以守护进程启动
# loglevel notice
设置日志的级别 debug、verbose、notice、warning,默认为verbose
# logfile ""
日志文件的位置,当指定为空字符串时,为标准输出,如果redis已守护进程模式运行,那么日志将会输出到 /dev/null 。
SNAPSHOTTING:快照
—
# save 900 1
# save 300 10
# save 60 1
指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
这里表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改
如果想禁用RDB持久化的策略,只要不设置任何save指令,或者给save传入一个空字符串参数也可以
# stop-writes-on-bgsave-error yes
默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作,这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘, 否则就会没人注意到灾难的发生。如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。
如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制。
# rdbcompression yes
对于存储到磁盘中的快照(rdb),可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能。
# rdbchecksum yes
在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。
# dbfilename dump.rdb
rdb文件的名字。
# dir ./
dbfilename文件存放目录。必须是一个目录,aof文件也会保存到该目录下。
REPLICATION:复制
—
# replicaof <masterip> <masterport>
# masterauth <master-password>
当master服务设置了密码保护时,slave服务连接master的密码
# replica-serve-stale-data yes
当一个slave与master失去联系时,或者复制正在进行的时候,slave应对请求的行为:
如果为 yes(默认值) ,slave 仍然会应答客户端请求,但返回的数据可能是过时,或者数据可能是空的在第一次同步的时候。
如果为 no ,在你执行除了 info 和 salveof 之外的其他命令时,slave 都将返回一个 "SYNC with master in progress" 的错误。
# replica-read-only yes
设置slave是否是只读的。从2.6版起,slave默认是只读的。
# repl-disable-tcp-nodelay no
指定向slave同步数据时,是否禁用socket的NO_DELAY选项。
若配置为“yes”,则禁用NO_DELAY,则TCP协议栈会合并小包统一发送,这样可以减少主从节点间的包数量并节省带宽,但会增加数据同步到 slave的时间。
若配置为“no”,表明启用NO_DELAY,则TCP协议栈不会延迟小包的发送时机,这样数据同步的延时会减少,但需要更大的带宽。
通常情况下,应该配置为no以降低同步延时,但在主从节点间网络负载已经很高的情况下,可以配置为yes。
# repl-backlog-size 1mb
设置主从复制backlog容量大小。这个 backlog 是一个用来在 slaves 被断开连接时存放 slave 数据的 buffer,所以当一个 slave 想要重新连接,通常不希望全部重新同步,只是部分同步就够了,仅仅传递 slave 在断开连接时丢失的这部分数据。
这个值越大,salve 可以断开连接的时间就越长。
# repl-backlog-ttl 3600
配置当master和slave失去联系多少秒之后,清空backlog释放空间。当配置成0时,表示永远不清空。
# replica-priority 100
当 master 不能正常工作的时候,Redis Sentinel 会从 slaves 中选出一个新的 master,这个值越小,就越会被优先选中,但是如果是 0 , 那是意味着这个 slave 不可能被选中。默认优先级为 100。