Redis -- 02 配置文件解析

redis的配置文件为 redis.conf, 使用 ./redis-server /path/to/redis.conf 可以根据自定义的配置启动redis实例

 

 

 

 

include // 引入其他配置文件, 将统一的配置放在一块,将不同的配置单独配置,然后引入相同的配置
daemonize no  // yes为后台运行,no为控制台运行
pidfile // pid文件的位置,由于redis可以启动多实例,每个实例要使用不同的一个pid文件,所以要指定此项

 

 

port 6379 // 启动端口

 

 

tcp-backlog 511  //此参数确定了TCP连接中已完成队列(完成三次握手之后)的长度, 当然此值必须不大于Linux系统定义的/proc/sys/net/core/somaxconn值,默认是511,而Linux的默认参数值是128。当系统并发量大并且客户端速度缓慢的时候,可以将这二个参数一起参考设定。

 

 

 

bind 127.0.0.1 // 监听的网卡 不设置的话是全部的网卡

 

 

 

timeout 0  // 客户端无操作超时时间 0为永不超时

 

 

tcp-keepalive 60  // 如果设置非0值,那么单位是秒,将周期性的使用SO_KEEPALIVE检测客户端是否还处于健康状态,避免服务器一直阻塞,官方建议值是60s

 

 

loglevel notice // 指定服务器的日志类型: debug, verbose, notice, warning。 默认是notice

 

 

logfile  // 指定日志的地方

 

 

syslog-enabled // 是否写入系统日志

 

syslog-ident  // 系统日志 类型标识

 

 

databases 16 // 开多少个数据库 ,默认为0号数据库 , 用select 命令可以换db

 

 

----------------快照设置start-------------------------------

 

save 60 1000   --在60s内有1000条写入就执行快照,该配置可以设置多次,满足其中一条即开始快照,一条以上就启用快照功能
stop-writes-on-bgsave-error no   --如果快照写入失败(由于某些原因),Redis是否停止接收写操作(是或否)
rdbcompression yes  // 是否使用LZF压缩STRING当写入rdb的时候
rdbchecksum yes // 是否对rdb进行CRC64校验
dir ./  -- 快照写到什么地方
dbfilename dump.rdb   -- 内存快照的文件名

 

----------------快照设置end--------------------------------

 

 

-----------------------AOF start---------------------------------

 

appendonly no   --是否开启aof
appendfsync everysec   -- aof文件的同步频率,取值为 always(每次写操作同步),everysec(每秒钟),no(由操作系统决定什么时候写入)
no-appendfsync-on-rewrite no -- 是否在aof文件重写期间调用fsync
appendfilename "appendonly.aof" // aof文件名
auto-aof-rewrite-percentage 100 -- 指定重写aof文件的条件,超过上次rewrite文件大小的百分比
auto-aof-rewrite-min-size 64mb --指定重写aof文件的条件,达到这个大小时才可以重写  auto-aof-rewrite-percentage  和 auto-aof-rewrite-min-size条件必须同时满足
aof-load-truncated yes // redis在启动时可以加载被截断的AOF文件,而不需要先执行 redis-check-aof
dir./   -- 文件所在的目录

 

-----------------------AOF end----------------------------------

 

 

-----------------------复制start----------------------------------

 

slaveof $(ip) $(port) // 设置为谁的slave,将从master复制数据

 

masterauth // 如果连接master 需要密码

 

slave-serve-stale-data yes //  在从master复制的过程中 slave是否继续接受客户端的请求。。。 当slave服务器和master服务器失去连接后,或者当数据正在复制传输的时候,如果此参数值设置“yes”,slave服务器可以继续接受客户端的请求,否则,会返回给请求的客户端如下信息“SYNC with master in progress”

 

slave-read-only yes //  slave是不是只读的

 

repl-diskless-sync no // 当客户端连接master的时候,同步的方式。  如果设置为yes(无盘复制),master起一个后台进程将rdb通过socket写入slave。 如果设置为no,master起一个后台线程将rdb文件写入硬盘,然后将硬盘里的rdb文件发给slave

 

repl-diskless-sync-delay 5 // 当使用无盘复制时,正在复制的时候,如果有新的slave到来了,排队,等待5s,让更多的slave一起开始下一次同步,设置为0的时候不等待

 

repl-ping-slave-period 10  //salve每个10s发送PING给master

 

repl-timeout 60 //复制超时时间

 

repl-disable-tcp-nodelay  no // 在master和slave之间是否限制高带宽

 

repl-backlog-size 1mb  // 当slave 失去连接之后,master会将命令缓存到backlog里,供slave重连的时候不需要全部同步数据,这个设置指定这个backlog的最大的大小。超出之后,slave重连时就不能不分同步了。

 

repl-backlog-ttl 3600 // 当master不再连接任何slave时,backlog就可以释放了,这个配置指定了当没有slave之后多长时间开始释放。

 

slave-priority 100 // slave 优先级, Sentinel会使用它作为master选举的因素。

 

-----------------------复制end-----------------------------------

 

 

---------------------- 安全start-----------------------------------

 

requirepass  // 密码

 

rename-command // 命令重命名, 在一个共享环境下可以重命名相对危险的命令。比如把 CONFIG 重名为一个不容易猜测的字符

 

-----------------------安全end------------------------------------

 

 

-----------------------约束start-----------------------------------

 

maxclients 10000  // 最大连接数

 

maxmemory <bytes>  // redis 最大会占用多少内存

 

maxmemory-policy noeviction  //  内存占用策略, 当内存不够时的内存移除策略

 

 

-----------------------约束end------------------------------------

 

 

-----------------------LUA 脚本start------------------------------

 

lua-time-limit 5000   // 脚本超时时间  毫秒

 

-----------------------LUA 脚本end-------------------------------

 

 

-----------------------集群start-----------------------------------

 

cluster-enabled yes   // 开启实例的集群能力

 

cluster-config-file nodes-6379.conf  // 集群模式下,每个redis节点生成一个自己的集群配置文件,这个文件不需要人工修改,由redis自己维护。

 

cluster-node-timeout 15000  // 集群模式时,当前节点在与其他节点保活探测时,多久没有响应时认为其他节点处于fail状态,上面是15秒。

 

cluster-slave-validity-factor <factor> // 如果将该项设置为0,不管slave节点和master节点间失联多久都会一直尝试failover(设为正数,失联大于一定时间(factor*节点TimeOut),不再进行FailOver)。比如,如果节点的timeout设置为5秒,该项设置为10,如果master跟slave之间失联超过50秒,slave不会去failover它的master(意思是不会去把master设置为挂起状态,并取代它)。注意:任意非0数值都有可能导致当master挂掉又没有slave去failover它,这样redis集群不可用。在这种情况下只有原来那个master重新回到集群中才能让集群恢复工作。

 

cluster-migration-barrier <count>: 一个master可以拥有的最小slave数量。该项的作用是,当一个master没有任何slave的时候,某些有富余slave的master节点,可以自动的分一个slave给它。

 

cluster-require-full-coverage <yes/no>: 如果该项设置为yes(默认就是yes) 当一定比例的键空间没有被覆盖到(就是某一部分的哈希槽没了,有可能是暂时挂了)集群就停止处理任何查询操作。如果该项设置为no,那么就算请求中只有一部分的键可以被查到,一样可以查询(但是有可能会查不全)

 

-----------------------集群end------------------------------------

 

 

-----------------------慢查询日志start----------------------------

 

slowlog-log-slower-than 10000  // 日志入口 微秒
slowlog-max-len 128  // 日志大小限制
-----------------------慢查询日志end-----------------------------

 

posted on 2016-08-18 11:36  code_play  阅读(119)  评论(0编辑  收藏  举报