Redis 7配置解析

vincent0809
发布于 2022-4-14 11:02
浏览
0收藏

 

 

一、简述


Redis7 有很多新的功能、bug修改、特性优化,因此也伴随着很多新配置和变化,本文进行逐一说明

 

Redis 7配置解析-鸿蒙开发者社区

 

二、配置详解


1.1 appenddirname (#9788)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


定义存储aof文件的目录名,它和配置dir组成绝对目录。

 

(2) 推荐配置:


和部署目录相关:决定是端口号或者默认值。

 

1.2 aof-timestamp-enabled (#9788)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


aof是否支持时间戳,如设置会变成:

 

Redis 7配置解析-鸿蒙开发者社区

 

(2) 推荐配置:


结合现有体系决定。

 

Redis 7配置解析-鸿蒙开发者社区

 

2.shutdown-timeout  (#9872)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


当执行shutdown命令时,为slave节点复制剩余offset的最大等待时间,一定程度上提高一致性。

 

Redis 7配置解析-鸿蒙开发者社区

 

在Redis cron内如果发现shutdown-timeout不等于0,则会等待相关slave节点复制完毕。相关函数过长如感兴趣自行阅读。

 

Redis 7配置解析-鸿蒙开发者社区

 

(2) 推荐配置:


可根据自身写入、网络等等情况进行配置,个人认为默认值基本OK。

 

3. maxmemory-clients   (#8687)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 前情回顾(7.0之前)


(a) 对单个客户端输出缓冲区限制:

 

Redis 7配置解析-鸿蒙开发者社区

 

(b) 对单个客户端的输入缓冲区,之前固定为1gb,在4.0之后改为可配置

 

Redis 7配置解析-鸿蒙开发者社区

 

(2) 配置说明:


给所有clients加了最大内存的限制,当超过该限制后,Redis将会按照一定策略杀掉问题客户端,称为client eviction。

有两种配置方式:

 

(a) 具体值

 

Redis 7配置解析-鸿蒙开发者社区

 

(b) 百分比:为maxmemory配置的XX%

 

Redis 7配置解析-鸿蒙开发者社区

(3) 推荐配置:


如果整机部署密度较高,建议配置一定百分比,但会有客户端被干掉的风险。

 

4. repl-diskless-sync-max-replicas  (#10092)


Redis 7配置解析-鸿蒙开发者社区

 

(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)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


Redis 7中ziplist被listpack替代,所以相关配置都变为listpack,有关listpack会有单独文章说明。

 

(2) 推荐配置:


建议结合单核cpu使用量、数据量等综合评估成本收益、性能、可用性。

 

6. busy-reply-threshold (#9963)


Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


lua-time-limit的别名,分别服务于lua、function、module的一些特殊命令

 

(2) 推荐配置:


谨慎设置,超时后Redis只允许一些特殊命令(如下),其他命令均返回a BUSY error.

 

Redis 7配置解析-鸿蒙开发者社区

 

7.1 latency-tracking (#9462)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


是否开启命令latency追踪

 

(2) 推荐配置:


开启

 

7.2 latency-tracking-info-percentiles (#9462)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


对应p50(中位数)、p99、p99.9每个命令的耗时,例如:

 

Redis 7配置解析-鸿蒙开发者社区

 

(2) 推荐配置:


可以自行调配

 

8. cluster-port (#9389)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


redis cluster默认的通信(bus)端口 = port + 10000,该值可以动态设置指定端口,例如

 

Redis 7配置解析-鸿蒙开发者社区

 

(2) 推荐配置:


如不是强烈需要,否则不要设置,会增加复杂性。

 

9. bind-source-addr (#9142)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


指定了redis作为客户端时,建立连接时指定源ip地址。包括:

 

 •主从链接中,从节点链接到主节点建立连接时的源ip地址
 •sentinel链接所有实例时,建立连接时的源ip地址
 •cluster模式中,建立到其他节点的通信连接时的源ip地址


(2) 推荐配置:


如果有多个ip地址,并且有将正常请求和redis内部请求分开的需求时,可以使用此配置;

 

否则,不建议设置。

 

10.1 cluster-preferred-endpoint-type (#9530)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


7.0后redis cluster除了支持ip,还支持了hostname。

 

(2) 推荐配置:


有强需求可以使用。

 

10.2 cluster-announce-hostname (#9530)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


如果cluster-preferred-endpoint-type设置为hostname,那cluster-announce-hostname就是具体的值。

 

(2) 推荐配置:


有强需求可以使用。

 

11. cluster-allow-pubsubshard-when-down (#8621)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


当redis cluster处于down state时,是否可以继续使用shard pubsub。

 

(2) 推荐配置:


保持默认值,但是不建议在集群版用这个功能,单独部署一个redis sentinel做pubsub会更好。

 

12. cluster-link-sendbuf-limit (#9774)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


针对redis cluster中每一个cluster bus link's send buffer容量进行限制,超过这个限制会被“干掉”。

 

相关查看命令:cluster links

 

相关统计 info memory中的mem_cluster_links是link的总内存

 

(2) 推荐配置:


建议配置一个合理值,因为正常情况下每个link的内存量不会很大。

 

13. enable-protected-configs (#9920)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


设置是否允许对保护的配置进行动态配置;目前主要包括:

 

 •dbfilename


 •dir

 

(2) 推荐配置:


推荐默认设置即可。

 

14. enable-debug-command (#9920)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


为了安全考虑,禁止掉debug命令,且不能动态修改

 

(2) 推荐配置:


debug命令在一些场景很有帮助,但对安全性有一些影响,需要综合评价,一定注意此配置不可以动态修改。

 

15. enable-module-command (#9920)

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


为了安全考虑,禁止掉module命令,且不能动态修改

 

(2) 推荐配置:


是否需要module来决定

 

16. loading-process-events-interval-bytes

 

Redis 7配置解析-鸿蒙开发者社区

 

(1) 配置说明:


maximum single read or write chunk size

 

(2) 推荐配置:


如无特殊,默认即可。

 

三、默认值变化


module 和 debug因为安全考虑,默认被禁止,且不能动态修改,这个一定注意。(#9920)


无盘复制作为默认选项,这个一定注意。(#10092)


四、总结


随着一些新功能的加入,Redis也添加了很多新配置,例如appenddirname、maxmemory-clients、latency-*,listpack相关等,同时有一些默认值也发生变化(默认禁止module和debug、默认开启无盘复制)

 

文章转自公众号:Redis开发运维实战

 

分类
标签
收藏
回复
举报
回复
    相关推荐