【Redis运维】Redis 3.x配置文件示例与说明

TangLu Redis 2021-03-23 3440 0
bind 127.0.0.1
protected-mode yes
daemonize yes 
port 6379
tcp-backlog 511     #在高并发环境下需要调高该值避免客户端连接问题。该值受/proc/sys/net/core/somaxconn系统参数影响,需一起调整
timeout 300       #客户端空闲时间达到多少秒就被关闭,0为不关闭
tcp-keepalive 300   #客户端与服务器端如果没有数据交互,多少秒进行一次ping/pong交互,以判断客户端是否假死、网络断开等情况
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/data/redis/logs/redis.log"
databases 16
requirepass 123456  #redis密码
rename-command  KEYS ADMINKEYS  #命令别名,经测试如果对config命令重命名会导致哨兵切换出现"next failover delay: I will not start a failover before"的异常
maxclients 10000  #最大客户端连接数
maxmemory 1GB  #redis最大占用内存,可写为1kb,5GB,4Mb等常见格式,不区分大小写
maxmemory-policy volatile-lru  #内存淘汰策略,见后文详细解释
# maxmemory-samples 5  #LRU和最小TTL算法精确度不高,但是很接近(为了省内存),这里可以设置用N个样本做检测

# RDB持久化配置 
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes  #如果快照保存失败,所有节点停止写入
rdbcompression yes    #RDB是否压缩
rdbchecksum yes       #校验RDB文件
dbfilename dump.rdb   #RDB文件名
dir /data/redis/rdb/  #RDB存放目录
rdb-save-incremental-fsync yes  #当Redis保存RDB文件时,每生成32MB数据就执行一次fsync操作,这样分批提交可以避免高延迟

# 主从配置
slaveof <masterip> <masterport>  #如果填写了其他节点ip与端口,本节点就作为那个节点的从库
masterauth <master-password>     #主库的密码
slave-serve-stale-data yes       #如果从库与主库失联,是否继续响应客户端请求,No则响应SYNC with master in progress
slave-read-only yes              #从库开启只读
repl-ping-slave-period 10        #从库向主库发送ping请求的间隔
repl-timeout 60                  #主从超时时间
repl-disable-tcp-nodelay no      #是否用nodelay方式传输数据,no可以降低数据传输到从库的延迟,但使用更多的带宽
repl-backlog-size 10mb           #增量复制时数据挤压缓冲区大小,主从发生中断后,主库会把离线之后产生的数存储在该区域,避免短时间断开服务却进行全量同步的问题
repl-backlog-ttl 3600            #当所有从库都与主库断开连接后达到多少秒释放backlog
slave-priority 100               #从库优先级,数字越小优先级越高,0代表不会被哨兵选为主
# min-slaves-to-write 3          #如果从库少于N个,主库就停止写入,需配合min-slaves-max-lag一起使用。比如至少需要3个从库、并且延时小于等于10秒的,主库才能写入
# min-slaves-max-lag 10          #如果从库延迟小于N秒,主库才能写入数据,需配合min-slaves-to-write一起使用。比如至少需要3个从库、并且延时小于等于10秒的,主库才能写入
repl-diskless-sync yes           #开启无盘复制,主从全量同步时,主库并不会在本地创建RDB 文件,而是创建一个子进程通过Socket将RDB文件写入到从服务器,节约IO资源
repl-diskless-sync-delay 5       #开启无盘复制时,主节点等待秒数,如果超过这个时间没有更多从节点提交连接申请就开始传输数据,后续请求需要排队。好比公交车发车前等待一会儿,后续人得等下一班

# AOF持久化配置
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
# appendfsync always
# appendfsync no
no-appendfsync-on-rewrite no  #该配置项为yes表示AOF重写时,不进行fsync,此时实例发生宕机会导致数据丢失。设置为no(默认配置)表示AOF重写时调用后台线程进行fsync
auto-aof-rewrite-percentage 100  #aof文件体积与上次相比增长率达到100%就进行重写(重写相当于记总账,比如对同一个key做了100次操作,我们只需要最后一次的操作,重写就会把多余的操作给忽略掉,节省内存
auto-aof-rewrite-min-size 64mb  #和auto-aof-rewrite-percentage组合使用,aof文件达到64M时进行重写
aof-load-truncated yes
aof-rewrite-incremental-fsync yes  #当Redis保存AOF文件时,每生成32MB数据就执行一次fsync操作,这样分批提交可以避免高延迟

#慢日志配置
slowlog-log-slower-than 100000  #慢查询的评定时间,单位为微妙,这里代表0.1秒
slowlog-max-len 1000  #慢日志最大记录条数

#当hash\list\set类型的键只有少量数据时会用一种更节省内存的数据结构来编码
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes  #启用hash刷新,尽快释放内存

#客户端输出缓冲区配置
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60

hz 10  #通常使用默认10即可(可选范围1到500)。该值设置Redis每秒处理后台任务的频率,如清理过期Key、关闭超时连接等。调高该值可以让CPU空闲时间更频繁的去处理后台的任务,但通常不建议调高到100以上
dynamic-hz yes  #动态调整hz的值

评论