分类:Redis| 发布时间:2019-04-09 10:46:00
本文主要描述了 Redis 各个配置项的作用以及可能的取值,主要针对 Redis 5.0.4 版本,不同版本的选项会有所不同。
在 Ubuntu 下,如果你是以 deb 包的形式安装 Redis 的,那么 redis 的默认配置文件将在 /etc/redis/redis.conf。 打开 /etc/redis/redis.conf 我们首先会看到 Redis 配置文件中单元大小的解释:
# Note on units: when memory size is needed, it is possible to specify
# it in the usual form of 1k 5GB 4M and so forth:
#
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# units are case insensitive so 1GB 1Gb 1gB are all the same.
include /path/to/local.conf
Redis 支持通过 include 选项来载入其他配置文件
loadmodule /path/to/my_module.so
loadmodule /path/to/other_module.so
Redis 可以通过 loadmodule 选项在启动时加载模块,若服务端无法加载模块,服务端会停止。 可以通过多个 loadmodule 选项加载多个模块。
bind 127.0.0.1
bind 选项用于设置监听的 network interface,不设置这个选项相当于 bind 0.0.0.0,可以通过这个选项监听多个 network interface, 如:
bind 192.168.1.100 10.0.0.1
当设置多个 bind 地址后,Redis 内部会维护多个 Socket,每个 Socket 用于一个 network interface。
protected-mode yes
此选项默认开启,开启此选项后, 当 Redis 服务端未使用 bind 选项显式指定要监听的 network interface,并且未设置密码, Redis 服务端只会接受来自 127.0.0.1 和 ::1 的客户端以及 Unix 域的 Socket 进行连接。
port 6379
port 选项用于设置 Redis 监听的 TCP 端口,默认为 6379,设置为 0 表示不监听 TCP 端口
tcp-backlog 511
tcp-backlog 用于设置 TCP 连接的排队队列长度,最终就是影响到 listen 接口的 backlog 参数。
unixsocket /var/run/redis/redis.sock
unixsocketperm 700
unixsocket 和 unixsocketperm 用于设置 Unix 域套接字,默认不开启。
timeout 0
当客户端空闲 timeout 秒后,Redis 服务端主动关闭此连接, 0 表示不启用此功能。
tcp-keepalive 300
将此值设置为非 0 值表示启用协议层的心跳检测功能,此功能是通过 setsockopt 的 SO_KEEPALIVE 选项开启的。
daemonize yes
设置 daemonize 选项为 yes 会使 Redis 以守护进程模式启动,在此模式下,Redis 默认会将 pid 写入 /var/run/redis.pid。 可以通过 pidfile 选项修改写入的文件,如:
pidfile /var/run/redis/redis-server.pid
supervised no
当你通过 upstart 或者 systemd 运行 Redis 时,Redis 可以和你的 supervision tree 进行交互,可选的选项为:
loglevel notice
日志级别,可以设置为: debug、verbose、notice、warning 中的一个。
logfile /var/log/redis/redis-server.log
logfile 选项用于设置日志输出的路径,若没有设置此路径,则 Redis 会将日志输出到标准输出,若以守护进程模式启动则输出到 /dev/null。
# To enable logging to the system logger, just set 'syslog-enabled' to yes,
# and optionally update the other syslog parameters to suit your needs.
# syslog-enabled no
# Specify the syslog identity.
# syslog-ident redis
# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.
# syslog-facility local0
以上三个选项用于设置是否将日志输出到 syslog,syslog-ident 和 syslog-facility 对应了系统接口 openlog 的 ident 和 facility 选项。
databases 16
Redis 的数据库个数,当你连接到 Redis 服务器时,默认会选中 0 号数据库,可以通过 SELECT num 命令,选择要使用的数据库(num 表示 0 到 此选项的值减 1 的数据库)。
always-show-logo yes
默认情况下,Redis 只会在交互模式才显示 ASCII 版本的 logo,可以通过设置此选项为 yes,使 Redis 在任何情况下都显示 logo,使得 Redis 的此行为和 4.0 之前的版本行为保持一致。
save 900 1
save 300 10
save 60 10000
save 选项用于设置 Redis 将数据库持久化到硬盘的时间,可以有多个 save 选项。 save 后面的第一个数字表示多少秒进行一次检查,第二个数字表示此时间内有多少个 key 被改变会将数据库持久化到硬盘。 比如上面的三个选项表示,每 900 秒内,如果有多于 1 个 key 被改变(包括增加,修改,删除)则将其持久化到硬盘, 每 300 秒内,如果有多于 10 个 key 被改变则将其持久化到硬盘,每 60 秒内,如果有多于 10000 个 key 被改变则将其持久化到硬盘。
stop-writes-on-bgsave-error yes
当最近一次的持久化操作失败后,Redis 会拒绝客户端的写入操作,通过这种行为客户端会知道服务端的不正常现象。 若持久化操作可以正常工作后,服务端会自动允许客户端的写入操作。 如果你自己有 Redis 服务端的监控方案,或者你希望即使持久化失败 Redis 也可以正常工作,则可以将此选项设置为 no。
rdbcompression yes
设置为 yes 表示使用 LZO 算法压缩持久化到硬盘的 string 对象。
rdbchecksum yes
RDB 文件是否开启校验和。
dbfilename dump.rdb
RDB 文件的文件名。
dir /var/lib/redis
Redis 的工作目录,RDB 和 AOF (后面会说)文件会保存到此目录。