欢迎您, 来到 宁时修博客.^_^

Redis 系列 --- 02、redis.conf 配置文件解析

2019/08/10 林木立 Redis 432
Redis 系列 --- 02、redis.conf 配置文件解析

单位设置:

1k => 1000 bytes
1kb => 1024 bytes
1m => 1000000 bytes
1mb => 1024*1024 bytes
1g => 1000000000 bytes
1gb => 1024*1024*1024 bytes

单位是不区分大小写的,所以 1GB、1Gb、1gB是相同的。


include 包含配置:

在此处包含一个或多个其他配置文件。
如果您有一个用于所有Redis Server的标准模板,但还需要为每个 Server 自定义一些设置,则此模板非常有用。
include 可以包含其它配置文件,因此请明智地使用它。

注意选项“include”设置不会被来自redis admin或redis sentinel的命令“config rewrite”重写。

因为redis始终使用最后处理的选项配置行作为配置指令的值,所以最好将include放在该文件的开头,以避免在运行时覆盖配置更改。

如果您有兴趣使用 include 来覆盖以往的配置选项,就将 include 作为最后一行。

include /path/to/local.conf
include /path/to/other.conf


模块配置:

启动时加载模块。如果服务器无法加载模块,它将中止启动。可以使用多个loadmodule指令。

loadmodule /path/to/my_module.so
loadmodule /path/to/other_module.so


网络配置:

bind 从指定的网络接口(网卡)监听连接请求:
默认情况下,如果未指定“bind”配置指令,Redis将侦听服务器上所有可用网络接口的连接。可以使用“bind”配置指令,后跟一个或多个IP地址,只侦听一个或多个选定接口。
示例:
bind 192.168.1.100 10.0.0.1
bind 127.0.0.1::1

~~~警告~~~
如果运行Redis的计算机直接暴露在互联网上,绑定到所有接口是危险的,并且会将实例暴露给互联网上的每个人。因此,默认情况下,我们取消对以下绑定指令的注释,这将强制Redis只侦听ipv4环回接口地址(这意味着redis只能接受运行在同一台计算机上的客户端的连接)。

如果您确定要让实例监听所有接口,则必须对以下行进行注释。
bind 127.0.0.1


protected-mode 保护模式:

保护模式是一个安全保护层,为了避免在Internet上打开的Redis实例被访问和利用。
当保护模式打开时,如果:
1)服务器没有使用“bind”指令显式绑定到一组地址。
2)未配置密码。
服务器仅接受来自IPv4和IPv6环回地址 127.0.0.1和:: 1以及Unix域套接字的客户端的连接

默认情况下启用保护模式。
只有在确定希望其他主机的客户端连接到Redis时,则应禁用它,即使未配置任何身份验证,也没使用“bind”指令明确列出一组特定的网络接口。

protected-mode yes


监听端口号:

接受指定端口上的连接,默认为6379(IANA 815344)。如果指定端口 0,则Redis不会侦听TCP套接字。

port 6379


TCP listen backlog:

在每秒高请求的环境中,您需要调高此值以避免客户端连接缓慢的问题。此参数确定了服务端 socket 的监听队列长度。
请注意,Linux内核默认自动将其缩短为/proc/sys/net/core/somaxconn的值,因此请确保同时提高系统内核 net.core.somaxconn 和 net.ipv4.tcp_max_syn_backlog 的值,以获得所需的效果。
Linux的默认somaxconn 值是128,一般会将它修改为2048或者更大。在/etc/sysctl.conf中添加:net.core.somaxconn = 2048,然后在终端中执行sysctl -p。

tcp-backlog 511


Unix socket:

指定将用于侦听传入连接的Unix套接字的路径。
没有默认值,因此Redis在未指定时不会侦听unix套接字。

如果redis客户端和服务器在同一台机器,不需要走TCP网络接口监听,使用unix socket 方式效果会很明显。

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



timeout 超时:

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

timeout 0


TCP keepalive:

如果非 0,则与客户端缺乏通讯时周期性的使用SO_KEEPALIVE向客户端发送TCP ACK。检测客户端是否还处于健康状态,避免服务器一直阻塞。

这有两个原因:
1)检测死机的客户端。
2)从中间的网络设备的角度来看连接是否健康。

在Linux上,指定的值(以秒为单位)是用于发送ACK的周期。
请注意,要关闭连接,需要两倍的时间。
在其他内核上,周期取决于内核配置。

此选项的合理值为300秒,这是从Redis 3.2.1版本开始的新默认值。

tcp-keepalive 300


守护进程:

默认情况下,Redis不以后台守护进程方式运行。
如果需要,请设置为 “yes”。
请注意,当以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件。


daemonize yes


supervised:

Redis 3.2新增命令。如果需要在机器启动(upstart模式 或 systemd模式)时就启动Redis服务器,可以通过该选项来配置Redis。

支持的模式:
supervised no – 不会与supervised tree进行交互
supervised upstart – 将Redis server 添加到 SIGSTOP 模式中
supervised systemd – 将 READY=1 写入 $NOTIFY_SOCKET
supervised auto – 根据环境变量UPSTART_JOB 或 NOTIFY_SOCKET 自动检测选择 upstart 还是 systemd

注意,上述supervision方法(upstart或systemd)仅发出“程序已就绪”信号,不会继续给supervisor返回ping回复。
默认是不开启。

supervised no


Pid文件路径:
如果指定了pid文件,Redis启动时会将其写入指定的位置,并在退出时将其删除。

当Redis server 以非守护进程方式运行时,如果配置中未指定任何pid文件,则不会创建该文件。
当Redis server 以守护进程方式运行时,即使没有指定,也会使用pid文件,默认为“/var/run/redis.pid”。

如果Redis无法创建,也不会发生任何错误,Redis server将正常启动和运行。

pidfile /var/run/redis_6380.pid


Redis Server日志级别:

指定Server 日志详细复杂度级别。
Redis提供四种级别:

debug —- 包含大量信息,用于开发和测试
verbose —- 包含一些较少的有用信息,但没有debug级别混乱
notice —- 适量的提示信息,用于生产环境
warning —- 只包含非常重要和关键的信息

默认是notice

loglevel notice


Redis Server日志名和路径:

指定日志文件名和路径。此外,指定为空,则强制redis 的日志输出到 标准输出。 
但是以守护进程方式启动redis,当不指定日志文件名和路径时,日志会输出到 /dev/null。

logfile /opt/redis/redis_6380.log


点赞
说说你的看法

所有评论: (0)

# 加入组织

1、用手机QQ扫左侧二维码

2、搜Q群:1058582137

3、点击 宁时修博客交流群