Redis 7.0包含一系列面向用户的新特性、显著的性能提升和诸多其他改进、也包含一些对旧版本向后兼容性存在潜在破坏的改变,我们强烈建议用户在升级之前认真检阅发行笔记,用户需要特别关心的有以下几点:
-
Redis Functions:Redis函数,一种新的通过服务端脚本扩展Redis的方式,函数与数据本身一起存储。函数还被持久化到AOF文件,并从主文件复制到副本,因此它们与数据本身一样持久,见:https://redis.io/topics/functions-intro;
-
ACL改进:支持基于key的细粒度的权限,允许用户支持多个带有选择器的命令规则集,见:https://redis.io/topics/acl#key-permissions 和https://redis.io/topics/acl#selectors;
-
sharded-pubsub:分片发布/订阅支持,之前消息会在整个集群中广播,而与订阅特定频道/模式无关。发布行为会连接到集群中的所有节点,而不用客户端连接到所有节点都会收到订阅消息。见 https://redis.io/topics/pubsub#sharded-pubsub
-
在大多数情况下把子命令当作一类命令处理(Treat subcommands as commands)(影响 ACL类别、INFO 命令统计等)
-
文档更新:提供命令的元数据和文档,文档更完善,见https://redis.io/commands/command-docs 、https://redis.io/topics/command-tips
-
Command key-specs:为客户端定位key参数和读/写目的提供一种更好的方式;
-
多部分 AOF 机制避免了 AOF 重写的开销;
-
集群支持主机名配置,而不仅仅是 IP 地址;
-
客户端驱逐策略:改进了对网络缓冲区消耗的内存的管理,并且提供一个选项,当总内存超过限制时,剔除对应的客户端;
-
提供一种断开集群总线连接的机制,来防止不受控制的缓冲区增长;
-
AOF:增加时间戳和对基于时间点恢复的支持;
-
Lua:支持 EVAL 脚本中的函数标志;
-
Lua:支持 Verbatim 和 Big-Number 类型的 RESP3 回复;
-
Lua:可以通过 redis.REDIS_VERSION、redis.REDIS_VERSION_NUM来获取 Redis 版本。
-
CONFIG SET/GET 命令在一次调用中可以处理多个配置;
-
对于include配置项,支持全局模式匹配;
-
shutdown-timeout:关闭时等待复制副本的最长时间,默认10秒、未启用,仅当实例有副本时才适用;
-
maxmemory-clients:配置允许限制所有客户端的总内存使用量,默认未启用,可以配置实际的使用量(如1g),也可以配置相对于配置项maxmemory的百分比(1%~100%),当客户端连接占用内存超过改配置时,服务端会执行剔除客户端连接操作,尝试优先剔除内存占用最高的,这也成为客户端驱逐(client eviction)策略;
-
cluster-port:群集端口是群集总线将侦听入站连接的端口。默认为0、未启用,当设置为默认值0时,它将绑定到命令端口 +10000。设置此值需要您在执行cluster meet时指定群集总线端口;
-
bind-source-addr:默认情况下,传出连接(从副本到主机、从Sentinel到实例、集群总线等)不绑定到特定的本地地址。在大多数情况下,这意味着操作系统将根据路由和连接所通过的接口来处理。使用bind source addr可以配置要绑定到的特定地址,这也可能会影响连接的路由方式,默认未启用。
-
busy-reply-threshold:单位毫秒,默认值为5000,即5秒、未启用,和lua-time-limit功能相同,配置在Redis开始处理或拒绝其他客户端之前,EVAL脚本、函数以及某些情况下模块命令的最长时间;
-
repl-diskless-sync-max-replicas:如果启用无盘复制时存在延迟,则如果预期已连接的复制副本数量达到最大,则可以在达到最大延迟之前启动复制。默认值为0、启用,表示未定义最大值;
-
cluster-announce-hostname:集群可以使用此配置配置其公布的主机名,默认为空字符,未启用;
-
cluster-preferred-endpoint-type:集群公布客户端连接的方式,该配置有三个选项:‘ip’、‘hostname’、 ‘unknown-endpoint’,默认为ip,未启用;
-
latency-tracking:Redis 扩展的延迟监控可跟踪每个命令的延迟,延迟的开销非常小,并可通过INFO latencystats命令导出百分比分布,以及通过LATENCY命令导出直方图。默认为yes、未启用。
-
latency-tracking-info-percentiles:设置导出的数据百分比点,默认为:50 99 99.9;
-
cluster-allow-pubsublocal-when-down:这个配置项在最新的(7.0-rc3)配置文件中没找到,但是有cluster-allow-pubsubshard-when-down,默认为yes、未启用,当设置为yes时,允许节点在集群处于down状态时为pubsub shard流量提供服务,前提是它认为自己拥有这些槽位,这对于即使集群全局不处于稳定状态,应用程序仍想要使用pubsub功能会很有用;
-
cluster-link-sendbuf-limit:集群链路发送缓冲限制,是单个群集总线链路发送缓冲区内存使用量的限制,以字节为单位。如果超过此限制,群集链接将被释放。这主要是为了防止发送缓冲区在指向慢速对等方的链接上无限增长(例如,PubSub消息被堆积),默认为0、未启用,此限制处于禁用状态,当INFO中’mem_cluster_links’字段或’cluster links’命令输出中的’send buffer allocated’条目持续增加时,启用此限制;
-
旧的ziplist相关配置改成了对应的listpack:list-max-listpack-*, hash-max-listpack-*, zset-max-listpack-* 。