Redis 7配置解析
一、简述
Redis7 有很多新的功能、bug修改、特性优化,因此也伴随着很多新配置和变化,本文进行逐一说明
二、配置详解
1.1 appenddirname (#9788)
(1) 配置说明:
定义存储aof文件的目录名,它和配置dir组成绝对目录。
(2) 推荐配置:
和部署目录相关:决定是端口号或者默认值。
1.2 aof-timestamp-enabled (#9788)
(1) 配置说明:
aof是否支持时间戳,如设置会变成:
(2) 推荐配置:
结合现有体系决定。
2.shutdown-timeout (#9872)
(1) 配置说明:
当执行shutdown命令时,为slave节点复制剩余offset的最大等待时间,一定程度上提高一致性。
在Redis cron内如果发现shutdown-timeout不等于0,则会等待相关slave节点复制完毕。相关函数过长如感兴趣自行阅读。
(2) 推荐配置:
可根据自身写入、网络等等情况进行配置,个人认为默认值基本OK。
3. maxmemory-clients (#8687)
(1) 前情回顾(7.0之前)
(a) 对单个客户端输出缓冲区限制:
(b) 对单个客户端的输入缓冲区,之前固定为1gb,在4.0之后改为可配置
(2) 配置说明:
给所有clients加了最大内存的限制,当超过该限制后,Redis将会按照一定策略杀掉问题客户端,称为client eviction。
有两种配置方式:
(a) 具体值
(b) 百分比:为maxmemory配置的XX%
(3) 推荐配置:
如果整机部署密度较高,建议配置一定百分比,但会有客户端被干掉的风险。
4. repl-diskless-sync-max-replicas (#10092)
(1) 配置说明:
无盘复制下,repl-diskless-sync-delay保证串行,repl-diskless-sync-max-replicas是在repl-diskless-sync-delay内的并行个数。
(2) 推荐配置:
可根据从节点个数,机器部署密度等情况设置。ps: 通常都是一主一从,不需要该配置。
5. list-max-listpack-, hash-max-listpack-, zset-max-listpack-* (#8887, #9366, #9740)
(1) 配置说明:
Redis 7中ziplist被listpack替代,所以相关配置都变为listpack,有关listpack会有单独文章说明。
(2) 推荐配置:
建议结合单核cpu使用量、数据量等综合评估成本收益、性能、可用性。
6. busy-reply-threshold (#9963)
(1) 配置说明:
lua-time-limit的别名,分别服务于lua、function、module的一些特殊命令
(2) 推荐配置:
谨慎设置,超时后Redis只允许一些特殊命令(如下),其他命令均返回a BUSY error.
7.1 latency-tracking (#9462)
(1) 配置说明:
是否开启命令latency追踪
(2) 推荐配置:
开启
7.2 latency-tracking-info-percentiles (#9462)
(1) 配置说明:
对应p50(中位数)、p99、p99.9每个命令的耗时,例如:
(2) 推荐配置:
可以自行调配
8. cluster-port (#9389)
(1) 配置说明:
redis cluster默认的通信(bus)端口 = port + 10000,该值可以动态设置指定端口,例如
(2) 推荐配置:
如不是强烈需要,否则不要设置,会增加复杂性。
9. bind-source-addr (#9142)
(1) 配置说明:
指定了redis作为客户端时,建立连接时指定源ip地址。包括:
•主从链接中,从节点链接到主节点建立连接时的源ip地址
•sentinel链接所有实例时,建立连接时的源ip地址
•cluster模式中,建立到其他节点的通信连接时的源ip地址
(2) 推荐配置:
如果有多个ip地址,并且有将正常请求和redis内部请求分开的需求时,可以使用此配置;
否则,不建议设置。
10.1 cluster-preferred-endpoint-type (#9530)
(1) 配置说明:
7.0后redis cluster除了支持ip,还支持了hostname。
(2) 推荐配置:
有强需求可以使用。
10.2 cluster-announce-hostname (#9530)
(1) 配置说明:
如果cluster-preferred-endpoint-type设置为hostname,那cluster-announce-hostname就是具体的值。
(2) 推荐配置:
有强需求可以使用。
11. cluster-allow-pubsubshard-when-down (#8621)
(1) 配置说明:
当redis cluster处于down state时,是否可以继续使用shard pubsub。
(2) 推荐配置:
保持默认值,但是不建议在集群版用这个功能,单独部署一个redis sentinel做pubsub会更好。
12. cluster-link-sendbuf-limit (#9774)
(1) 配置说明:
针对redis cluster中每一个cluster bus link's send buffer容量进行限制,超过这个限制会被“干掉”。
相关查看命令:cluster links
相关统计 info memory中的mem_cluster_links是link的总内存
(2) 推荐配置:
建议配置一个合理值,因为正常情况下每个link的内存量不会很大。
13. enable-protected-configs (#9920)
(1) 配置说明:
设置是否允许对保护的配置进行动态配置;目前主要包括:
•dbfilename
•dir
(2) 推荐配置:
推荐默认设置即可。
14. enable-debug-command (#9920)
(1) 配置说明:
为了安全考虑,禁止掉debug命令,且不能动态修改
(2) 推荐配置:
debug命令在一些场景很有帮助,但对安全性有一些影响,需要综合评价,一定注意此配置不可以动态修改。
15. enable-module-command (#9920)
(1) 配置说明:
为了安全考虑,禁止掉module命令,且不能动态修改
(2) 推荐配置:
是否需要module来决定
16. loading-process-events-interval-bytes
(1) 配置说明:
maximum single read or write chunk size
(2) 推荐配置:
如无特殊,默认即可。
三、默认值变化
module 和 debug因为安全考虑,默认被禁止,且不能动态修改,这个一定注意。(#9920)
无盘复制作为默认选项,这个一定注意。(#10092)
四、总结
随着一些新功能的加入,Redis也添加了很多新配置,例如appenddirname、maxmemory-clients、latency-*,listpack相关等,同时有一些默认值也发生变化(默认禁止module和debug、默认开启无盘复制)
文章转自公众号:Redis开发运维实战