说明
# Note that in order to read the configuration file, Redis must be started with the file path as first argument:
# ./redis-server /path/to/redis.conf
# units are case insensitive so 1GB 1Gb 1gB are all the same.
redis.conf配置文件的开头说明了两件事情:
第一,如果你想让配置文件生效的话,就要使用这个配置文件的路径开启redis服务;
第二,内存单位并不区分大小写,比如1GB、1Gb、1gB均是可以的。
INCLUDES
include /path/to/local.conf
include /path/to/other.conf
如果有多个配置文件,就将redis.conf作为总配置文件,然后include其他配置文件。
需要注意的是,如果在配置文件的开头就include,那么引入的配置会被之后的配置覆盖。如果你想以被引入的配置为主,那么应该把include写在最后一行。
MODULES
loadmodule /path/to/my_module.so
loadmodule /path/to/other_module.so
你甚至可以引入自定义模块来为redis扩展功能!
NETWORK
# 绑定服务器IP(默认绑定的是环回地址,没被绑定的地址无法访问redis服务)
bind 127.0.0.1 ::1
# 保护模式(默认开启,无法直接被外网访问,除非绑定IP并为其设置了密码)
protected-mode yes
# 端口(指定服务开启在哪个端口上)
port 6379
# tcp已完成队列长度(TCP三次握手后。已连接(双向)的队列长度)
tcp-backlog 511
# 超时时间(客户端在超时时间内未发消息,则连接关闭;默认为0即不关闭)
timeout 0
# tcp存活时间(周期性检查客户端的存活状态)
tcp-keepalive 300
TLS/SSL
port 0
tls-port 6379
...
Redis提供对TLS/SSL加密协议的支持,TLS是更加安全的SSL。
这里对相关配置项不再赘述,可以自行搜索HTTP+TLS/SSL协议栈。
GENERAL
# Redis是否以守护进程的方式启动(默认为no)
daemonize no
# 守护进程文件路径(当Redis以守护进程方式启动时该配置才会有意义)
pidfile /var/run/redis_6379.pid
# 日志级别(debug详细日志、verbose较多日志、notice适量日志、warning仅记录关键信息)
loglevel notice
# 日志文件地址(默认为空,即打印在终端窗口上)
logfile ""
# 数据库数量(默认为16个,默认使用的是DB0,使用select命令切换)
databases 16
SNAPSHOTTING
# RDB持久化触发条件(语义是在一定时间间隔内对某个key的操作次数达到某个值时,就对其进行持久化)
save 3600 1
save 300 100
save 60 10000
# 持久化失败时是否停止接收数据(从而让用户意识到灾难的发生)
stop-writes-on-bgsave-error yes
# 是否自动压缩RDB文件(压缩后RDB文件更小,但是压缩过程需要消耗CPU)
rdbcompression yes
# 对持久化的数据是否进行CRC校验(这会增加大约10%的性能消耗)
rdbchecksum yes
# RDB文件名称
dbfilename dump.rdb
# 是否删除主从复制时创建的RDB文件(在没有开启持久化的实例中,最好将其删除)
rdb-del-sync-files no
# RDB文件存储目录
dir /usr/local/var/db/redis/
REPLICATION
# 如果当前服务器为slave,那么这里配置的就是master的IP地址和端口号
replicaof
# 如果当前服务器为slave,那么这里配置的就是master的访问密码
masterauth
# 如果当前服务器为slave,那么这里配置的就是master的用户名
masteruser
# slave是否阻塞(当正在进程主从复制时,或者slave已经失联时,该配置项会十分有意义)
replica-serve-stale-data yes
# slave是否只读(Redis默认读写分离)
replica-read-only yes
# 主从复制时是否开启无磁盘复制功能(主从复制一般是将生成的RDB存入磁盘,然后发给slave;无磁盘复制就是直接发)
repl-diskless-sync no
# 启用无磁盘复制功能后,延迟多久才会进行主从复制
repl-diskless-sync-delay 5
# 是否使用无磁盘加载
repl-diskless-load disabled
# slave心跳检测周期(默认10秒)
repl-ping-replica-period 10
# master心跳检测周期(默认60秒)
repl-timeout 60
# 是否禁用从站的tcp-nodelay(如果禁用,则每次发送的数据更少,主从复制延迟更大)
repl-disable-tcp-nodelay no
# 选举新master时,salve的优先级得分
replica-priority 100
CLIENTS
# 客户端最大连接数为10000
maxclients 10000
MEMORY MANAGEMENT
# 最大内存
maxmemory
# 内存满了之后的回收策略(默认不回收,可选LRU、random、TTL等回收思路)
maxmemory-policy noeviction
LAZY FREEING
# 因内存不足的key删除时,是否启用惰性删除
lazyfree-lazy-eviction no
# 因TTL过期的key删除时,是否启用惰性删除
lazyfree-lazy-expire no
APPEND ONLY MODE
# 是否开启AOF持久化
appendonly no
# AOF持久化频率(每个操作持久化、每秒持久化、不持久化)
appendfsync always
appendfsync everysec
appendfsync no
# AOF文件增长比例
auto-aof-rewrite-percentage 100
# 触发AOF重写的条件
auto-aof-rewrite-min-size 64mb
# 是否让AOF兼具RDB和AOF格式的特性,从而兼具两种持久化方式的优点
aof-use-rdb-preamble yes
More…
# 上面对引入、模块、网络、网络安全、通用、RDB、主从复制、客户端、内存管理、惰性删除、AOF的重要配置进行了注释
# 另外还有一些没有给出,比如键追踪、线程I/O、Lua脚本、集群、docker、nat、延迟监控、事件通知、碎片整理
# 并不是所有的Redis配置都在redis.conf中,比如哨兵模式的配置在redis-sential.conf
☘️ 玩转Redis专题!