units
计量单位说明:只支持 bytes,不支持 bit;对大小写不敏感。
include
指定包含其他的配置文件,可以在同一主机上多个 Redis 实例之间使用同一份公共的配置文件,而同时各个实例又拥有自己的特定配置文件。
genernal
daemonize
以守护进程方式启动(是否为后台进程)
pidfile
当 Redis 以守护进程方式运行时,Redis 默认会把 pid 写入 /var/run/redis.pid 文件中,可以通过该配置指定存放 pid 文件的位置,每个实例会产生一个不同的 pid 文件。
port
指定 Redis 监听端口,默认 6379。
tcp-backlog
可以理解是一个请求到达后至到接受进程处理前的队列,511 代表最大请求个数。
tcp-backlog 其实是一个连接队列:backlog 队列总和 = 未完成三次握手队列 + 已经完成三次握手队列
。
在高并发环境下你需要一个高 backlog 值来避免慢客户端连接问题。注意 Linux 内核会将这个值减小到 /proc/sys/net/core/somaxconn
的值,所以需要确认增大 somaxconn 和 tcp_max_syn_backing 两个值来达到想要的效果。
timeout
timeout:一个空闲的客户端维持多少秒会关闭,0 为永不关闭。
bind
- 默认情况
bind 127.0.0.1
只能接受本机的访问请求 - 不配置的情况下,无限制接受任何 ip 地址的访问
- 生产环境肯定要写应用服务器的地址
- 如果开启了
protected-mode
,就算没有设定bind ip
且没有设密码的情况下,Redis 依旧只允许接受本机的响应,所以两个都要搞
tcp-keepalive
对访问客户端的一种心跳检测,每个 n 秒检测一次。如果设置为0,则不会进行 Keepalive 检测。官方推荐设为 60 秒。
about log
- log level:指定日志记录级别。4 个级别根据使用阶段来选择,生产环境选择 notice 或者 warning。
- logfile:日志记录方式,默认为标准输出;如果配置 Redis 为守护进程方式运行,而这里又配置日志记录方式为标准输出,则日志将会发送给 /dev/null
- syslog-*
databases
设置数据库的数量
snapshotting
RDB 是整个内存压缩过的 Snapshot,RDB 的数据结构可以配置复合的快照触发条件。
save
指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合。
Redis 默认配置文件中提供了 3 个条件:
如果想禁用 RDB 持久化策略,只要不设置任何 save 指令,或者给 save 传入一个空字符串参数也行。
如果在客户端使用 save
指令,会立即备份(就算 Redis 当前并没有满足备份策略)。
stop-writes-on-bgsave-error
默认是 yes;如果配置成 no,表示不在乎数据不一致或者有其他的手段发现和控制。
rdbcompression
对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,Redis 会采用 LZF 算法进行压缩。如果不想消耗 CPU 来进行压缩的话,可以设置为 no 关闭此功能,但会导致数据文件变得巨大。
rdbchecksum
在存储快照后,还可以让 Redis 使用 CRC64 算法来进行数据校验,但是这样做会增大大约 10% 的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能。
dbfilename
分别代表:指定本地数据存放文件名、指定本地数据库存放目录
replication
slaveof
设置本机为 slave 服务时,设置 master 服务的 IP地址及端口。在 Redis 启动时,它会自动从 master 进行数据同步。
masterauth
当 master 服务设置了密码保护时,slave 服务连接 master 的密码。
slave-read-only
security
设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH <password>
命令提供密码,默认关闭。
limit
maxclient
设置同一时间最大客户端连接数。当客户端连接数达到限制时,Redis 会关闭新的连接并向客户端返回 max numbeR of clients reached 错误信息。如果设置 maxclients 为 0,则表示不做限制。
maxmemory
设置 Redis 可以使用的最大内存限制。
一旦到达内存使用上限,Redis 将会试图移除内部数据,移除规则可以通过 maxmemory-policy
来指定。如果 Redis 无法根据移除规则来移除内存中的数据或者设置了“不允许移除”,那么 Redis 则会针对那些需要申请内存的指令返回错误信息,比如 SET、LPUSH 等。
maxmemory-policy
maxmemory-samples
设置样本数量,LRU 算法和最小 TTL 算法都并非是精确的算法,而是估算值,所以你可以设置样本的大小。一般设置 3 到 7 的数字,数值越小样本越不准确,但是性能消耗也越小。
append only mode
appendonly
指定是否在每次更新操作后进行日志记录,Redis 在默认情况下是异步的把数据写入磁盘。如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 Redis 本身同步数据文件是按上面 save 条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为 no。
appendfilename
appendfsync
指示更新日志的条件,共有 3 个可选值:
- always:同步持久化,每次发生数据变更会立即记录到磁盘,性能较差但数据完整性比较好(慢、安全)
- everysec:出厂默认推荐,异步操作,每秒记录;如果一秒内宕机,有数据丢失(折中,默认值)
- no:等 OS 进行数据缓存同步到磁盘(快)
about rewrite
no-appendfsync-onrewrite
重写时是否可以运行 appendfsync,用默认 no 即可,保证数据安全性。
auto-aof-rewrite-*
Redis 会记录上次重写时的 AOF 大小,默认配置是当 AOF 文件大小是上次 rewrite 后大小的一倍且文件大于 64M 时触发。