vlambda博客
学习文章列表

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。