本文以redis 6.0.5版本的配置文件为例进行讲解。
-
INCLUDES
可以在redis的配置文件中通过include将其它配置文件引用进来,主要用于一些机器共用一份配置模板,但是部分机器需要个性配置的场景。
配置方式:
在配置文件中加一行
include /path/to/local.conf
需要注意的是,redis是以最后一此加载的配置项为准,如果当前配置文件和被引入的配置文件有相同配置项,且该配置项需要以被引入的配置文件的配置为准,则需要注意将include语句放在文件最后(至少是有冲突的那行配置之后),但是与此同时,include的文件有可能会覆盖其它冲突的配置项,因此需要特别注意include语句的位置。
-
GENERAL
一般配置。
daemonize yes // 是否让redis以deamon方式运行,默认no
pidfile /var/run/redis.pid // redis以deamon方式允许时记录进程ID的文件
loglevel notice // 日志级别,分为debug/verbose/notice/warning几级
logfile "" // 日志文件路径,空字符串时会将日志直接打印至控制台
databases 16 // 数据库个数,可以使用select指令切换数据库,范围0~maxnum-1
-
NETWORK
网络配置。
port 6379 // redis监听端口
tcp-backlog 511 // tcp的backlog大小(backlog是一个连接队列,队列总和=未完成三次握手队列+已完成三次握手队列),在高并发场景下需要一个高backlog值来避免慢客户端连接问题,但是此值不能大于linux内核/proc/sys/net/core/somaxconn的值,否则内核会以/proc/sys/net/core/somaxconn的值为准,在配置文件中配置的队列长度会无效。
timeout 0 // 客户端空闲几秒后自动关闭连接,0代表不关闭
tcp-keepalive 300 // redis向客户端发生ACK请求的周期,单位s
-
SNAPSHOTTING
快照配置。
dir ./ // redis的工作目录,配置后DB会以'dbfilename'配置的文件名存放在此目录下
save <seconds> <changes> // 内存中数据使用RDB策略持久化到磁盘的频率,此配置表示x秒内变更y次key则触发一次持久化
dbfilename dump.rdb // 存储dump出的db数据的文件名
stop-writes-on-bgsave-error yes // 后台保存数据失败了,客户端是否要停止正常服务
rdbcompression yes // 对于存储到磁盘中的快照,可以设置是否进行压缩存储,如果是,redis会采用LZF算法进行压缩,如果不想消耗CPU进行数据压缩的话,可以设置为no
rdbchecksum yes // 在存储快照后,是否使用CRC64算法进行数据校验
-
SECURITY
安全配置。连接redis和执行redis命令默认是不需要认证信息的,如果需要认证信息,可以在redis命令行中通过以下指令设置:
config set requirepass "123456" // 设置密码123456
设置后密码立即生效,再次执行指令时会要求输入密码,此后可以输入auth 123456进行认证。
-
MEMORY MANAGEMENT
maxmemory <bytes> // 设置最大的内存限制,单位是字节,若没有设置则代表redis缓存数据使用的内存大小没有限制
maxmemory-policy noeviction // 内存过期策略,选项值有以下几种:
volatile-lru:使用LRU(最近最少使用)算法移除KEY,只针对设置了过期时间的KEY
allkeys-lru:使用LRU算法进行移除,针对对所有KEY
volatile-lfu:删除最少使用的KEY,只针对设置了过期时间的KEY
allkeys-lfu:删除使用频率最少的KEY,针对所有KEY
volatile-random: 随机移除KEY,只针对设置了过期时间的KEY
allkeys-random:随机移除KEY,针对所有的KEY
volatile-ttl:删除TTL最小的KEY,即即将过期的KEY
noeviction:永不过期
-
APPEND ONLY MODE
appendonly no // 是否开启aof
appendfilename "appendonly.aof" // aof文件名
appendfsync everysec // 同步频率,有三个选项:
everysec:每秒记录一次
always: 同步持久化,每次发生数据变更就会被立即记录到磁盘
no
no-appendfsync-on-rewrite no // 是否开启重写
auto-aof-rewrite-percentage 100 // AOF文件增长率(当前AOF文件大小超过上一次重写的AOF文件大小的百分之多少才会重写)
auto-aof-rewrite-min-size 64mb // AOF文件重写需要的尺寸,AOF多大时开启重写