Redis 7.0 集群新配置参数相比 6.0 有什么区别?

文章导读
Redis 7.0 集群配置相比 6.0 的主要区别在于引入了多部分 AOF 文件机制,显著降低了持久化时的 IO 压力,并支持集群节点使用主机名而非仅 IP,提升了配置灵活性。此外,7.0 版本新增了分片发布订阅(Sharded Pub/Sub)以减少集群广播流量,引入了 Redis Functions 替代部分 Lua 脚本场景,支持持久化与复制。配置参数方面,7.0 增加了 maxmemor
📋 目录
  1. Redis 5.0、6.0 和 7.0 版本的核心更新特性总结
  2. Redis7.0 新特性 (超详细)
  3. Redis6.0、7.0 新特性整理_redis6 和 redis7-CSDN 博客
  4. 大版本新特性与兼容性
  5. FAQ
A A

Redis 7.0 集群配置相比 6.0 的主要区别在于引入了多部分 AOF 文件机制,显著降低了持久化时的 IO 压力,并支持集群节点使用主机名而非仅 IP,提升了配置灵活性。此外,7.0 版本新增了分片发布订阅(Sharded Pub/Sub)以减少集群广播流量,引入了 Redis Functions 替代部分 Lua 脚本场景,支持持久化与复制。配置参数方面,7.0 增加了 maxmemory-clients 限制客户端总内存,使用 listpack 全面替代 ziplist 以减少内存碎片,并增强了 CONFIG 命令支持批量处理。ACL 权限控制升级至 V2 版本,支持基于 Key 的细粒度权限。升级时需注意兼容性变更,如不再支持 STRALGO 命令等。

Redis 5.0、6.0 和 7.0 版本的核心更新特性总结

集群与模块增强 集群管理器从 Ruby 脚本迁移至 redis-cli 的 C 语言实现,简化操作。新增模块 API(定时器、集群、字典 API),提升扩展能力。有序集合优化 新增 ZPOPMIN/ZPOPMAX 及阻塞版本 BZPOPMIN/BZPOPMAX,支持按分数弹出元素。内存与性能改进 RDB 持久化新增存储 LFU/LRU 淘汰策略信息。动态调整 HZ(频率参数),平衡 CPU 使用率与响应速度。升级 Jemalloc 至 5.1 版本,优化内存分配。Redis 6.0 主要特性 多线程 I/O 引入多线程处理网络读写 (执行命令仍为单线程),提升吞吐量。需配置 io-threads 和 io-threads-do-reads 启用。ACL 权限控制 支持细粒度权限管理,可限制用户对命令和 Key 的访问,支持密码加密存储和外部 ACL 文件配置。客户端缓存 (Client-side Caching) 服务端追踪 Key 变更并通知客户端,减少重复查询,需客户端实现 (如 Lettuce 支持)。RESP3 协议 新通信协议支持更丰富的数据类型 (如浮点数、布尔值),增强客户端与服务端交互效率。安全性增强 默认禁用危险命令 (如 DEBUG),支持 SSL/TLS 加密通信。Redis 7.0 主要特性 多部分 AOF(Multi-part AOF) 将 AOF 文件拆分为基础文件 (Base)、增量文件 (Incr) 和清单文件 (Manifest),避免重写开销,提升持久化效率。Redis Functions 替代 Lua 脚本的轻量级服务端脚本方案,支持持久化到 RDB/AOF 及集群复制,降低脚本管理成本。数据结构与性能优化 全面用 listpack 替代 ziplist,减少内存碎片。新增命令如 ZMPOP(有序集合弹出元素)、LMPOP(列表弹出元素) 及其阻塞版本。ACL V2 支持基于 Key 的细粒度权限,改进客户端内存限制 (maxmemory-clients) 和连接管理。集群与运维增强 分片发布订阅 (Sharded Pub/Sub),减少广播流量。支持集群节点使用主机名 (非仅 IP),提升配置灵活性。版本对比与升级建议 Redis 5.0:适合需要消息队列 (Stream) 或有序集合扩展的场景。Redis 6.0:推荐需要高并发网络处理 (多线程 I/O) 或严格权限控制 (ACL) 的环境。Redis 7.0:优先选择以利用更高效的持久化 (多 AOF)、脚本管理 (Functions) 和内存优化 (listpack)。具体升级时需参考官方迁移指南以处理兼容性问题。

Redis7.0 新特性 (超详细)

二 配置项变动 2.1 多 AOF 文件支持 7.0 版本中一个比较大的变化就是 aof 文件由一个变成了多个,主要分为两种类型:基本文件 (base files)、增量文件 (incr files),请注意这些文件名称是复数形式说明每一类文件不仅仅只有一个。在此之外还引入了一个清单文件 (manifest) 用于跟踪文件以及文件的创建和应用顺序 (恢复)。redis.config 中对应的配置项:代码语言:javascript AI 代码解释 // 几种类型文件的前缀,后跟有关序列和类型的附加信息 appendfilename"appendonly.aof"// 新版本增加的目录配置项目 appenddirname"appendonlydir"// 如有下的 aof 文件存在 1.基本文件 appendonly.aof.1.base.rdb2.增量文件 appendonly.aof.1.incr.aof appendonly.aof.2.incr.aof3.清单文件 appendonly.aof.manifest 2.2 config 命令增强 CONFIG SET/GET 可以在一次调用中处理多个配置,注意 CONFIG GET 响应以不确定的顺序返回。2.3 限制客户端内存使用 增加允许限制所有客户端的总内存使用量配置项,redis.config 中对应的配置项:代码语言:javascript AI 代码解释 // 两种配置形式:指定内存大小、基于 maxmemory 的百分比。maxmemory-clients 1g maxmemory-clients10% 2.4 listpack 紧凑列表 listpack 是用来替代 ziplist 的新数据结构,在 7.0 版本已经没有 ziplist 的配置了 (6.0 版本仅部分数据类型作为过渡阶段在使用)。想了解 ziplist 的可以看文章《ziplist - 压缩列表》。redis.config 中对应的配置项:// 下面配置代表 listpack 已经替换了 ziplist 类似 hash-max-ziplist-entries 的配置了。代码语言:javascript AI 代码解释 list-max-listpack-size-2hash-max-listpack-entries512hash-max-listpack-value64zset-max-listpack-entries128zset-max-listpack-value64 2.5 传出连接绑定 增加了传出连接 (从副本到主服务器,从 Sentinel 到实例,集群总线等) 的绑定配置项,redis.config 中对应的配置项:bind-source-addr 10.0.0.1 1 2.6 等待副本关闭超时 在关闭期间,宽限期允许任何滞后的复制副本跟上主服务器存在之前的最新复制偏移量。这个时期可以防止数据丢失,尤其是对于没有配置磁盘备份的部署。“关机超时”值是宽限期的持续时间 (秒)。

Redis6.0、7.0 新特性整理_redis6 和 redis7-CSDN 博客

Redis 从 6.0 到 7.0 引入了一系列增强特性,包括多线程 IO 提升网络处理能力,ACL 支持细粒度权限控制,客户端缓存实现服务端协助的数据缓存,无盘复制与 PSYNC2 优化复制效率。此外,Redis 7.0 带来了 Function 功能加强脚本管理,Multi-part AOF 改进持久化,Sharded-pubsub 解决集群广播风暴问题,以及 Client-eviction 策略缓解内存压力。这些改进旨在提高性能、安全性和资源利用率。一、redis6.0 特性 1、众多新模块 (modules)API Redis6 中模块 API 开发进展非常大,因为 Redis Labs 为了开发复杂的功能,从一开始就用上 Redis 模块。Redis 可以变成一个框架,利用 Modules 来构建不同系统,而不需要从头开始写然后还要 BSD 许可。Redis 一开始就是一个向编写各种系统开放的平台。如:Disque 作为一个 Redis Module 使用足以展示 Redis 的模块系统的强大。集群消息总线 API、屏蔽和回复客户端、计时器、模块数据的 AOF 和 RDB 等。2、更好的过期循环 (expire cycle) Redis 6 重新编写了 Redis 活动到期周期,以更快地回收已到期的 key。3、多线程 IO(Threaded I/O) 3.1、Redis6.0 为什么要引入多线程呢?Redis 将所有数据放在内存中,内存的响应时长大约为 100 纳秒,对于小数据包,Redis 服务器可以处理 80,000 到 100,000 QPS,这也是 Redis 处理的极限了,对于 80% 的公司来说,单线程的 Redis 已经足够使用了。使用 redis 时,几乎不存在 CPU 成为瓶颈的情况,redis 主要受限于内存和网络 在一个普通的 linux 系统上,redis 通过使用 pipelining 每秒可以处理 100 万个请求,所以如果应用程序主要使用 Q ( N ) Q(N)Q(N) 或者 O ( l o g ( N ) ) O(log(N))O(log(N)) 的命令,它几乎不会占用太多 CPU 随着硬件性能提升,redis 的性能瓶颈可能出现网络 IO 的读写,也就是:单个线程处理网络读写的速度跟不上底层网络硬件的速度。读写网络的 read/write 系统调用占用了 redis 执行期间大部分 CPU 时间,瓶颈主要在于网络的 IO 消耗,优化主要有两个方向 提高网络 IO 性能,典型的实现比如使用 DPDK 来替代内核网络栈的方式、零拷贝技术。使用多线程充分利用多核,提高网络请求读写的并行度,典型的实现比如 Memcached。注意的是,redis 多 IO 线程模型只用来处理网络读写请求,对于 redis 的读写命令,依然是单线程处理。开启多线程配置:io-threads-do-readsyes AI 写代码 注:Redis6.0 的多线程默认是禁用的,只使用主线程。开启多线程后,还需要设置线程数,否则是不生效的。修改 redis.conf 配置文件:io-threads AI 写代码 线程数设置建议:核的机器建议设置为 2 或 3 个线程,8 核的建

Redis 7.0 集群新配置参数相比 6.0 有什么区别?

大版本新特性与兼容性

在云数据库 Tair(兼容 Redis) 中,您可以创建不同版本的实例,本文介绍各版本的新特性与兼容性变更。每部分包括社区和阿里云提供的特性及兼容性变更,您也可以参考 Tair 团队与社区共建的 Redis 大版本兼容性报告。Tair(企业版) 新特性 扩展数据结构:Tair(企业版)5.0 及以上版本支持 Tair 扩展数据结构,提供更丰富的数据模型和企业级功能。详情请参见 Tair 扩展数据结构概览。兼容性变更 Tair 扩展数据结构在从 5.0 版本升级至 6.0 版本时存在少量行为变更,6.0 和 7.0 版本之间无兼容性变更。各大版本的原生命令支持情况参见 Tair(企业版) 命令支持与限制。扩展数据结构 版本差异 (5.0 vs 6.0) 影响说明 TairHash(exHash) 在 EXHSCAN 命令中使用 pattern 参数时:•5.0 版本:仅对匹配 pattern 的 field 进行过期检查。•6.0 版本:对所有扫描到的 field(无论是否匹配) 均执行过期检查。在存在大量过期 field 且扫描的 count 值较大时,6.0 版本的响应时间 (RT) 可能会上升。TairBloom(Bloom) 底层使用的 Hash 算法更新。可能会导致假阳率略微上升。TairTS(TS) EXTS.S.ALTER:在 6.0 版本中,传入部分无效属性 (如 CHUNK_SIZE) 将被静默忽略,而在 5.0 版本中会报错。EXTS.S.INFO:在 6.0 版本中,返回值不再包含 maxDataPoints 字段。EXTS.S.RANGE / EXTS.P.RANGE:在 6.0 版本中,传入不支持的 withLabels 参数将被忽略,而在 5.0 版本中会报错。查询:6.0 版本查询时 bucket 可以小于 1 秒,5.0 版本不可以。• 检查业务代码是否依赖 EXTS.S.ALTER 和 EXTS.S.RANGE 等命令的报错逻辑。• 调整依赖 EXTS.S.INFO 返回值中 maxDataPoints 字段的客户端代码。新特性 关于 Redis7.0 的新特性请参见 7.0 release note。例如对于使用 Background 线程的 module 命令,慢日志功能会记录整个挂起的时间;对于普通的 Block 类命令 (例如 BLPOP),慢日志功能只会记录执行时间,不记录挂起时间。关于社区演进的 Breaking change 请参见 7.0 release note。例如不再支持 STRALGO 命令,替换为 LCS 命令。不再支持 Lua 脚本中的 allow-oom flag,更多信息请参见 redis/redis#10699。关于其他命令的支持变化,请参见 Redis 开源版命令支持。

FAQ

Redis 7.0 集群升级需要注意什么?

Redis 7.0 集群新配置参数相比 6.0 有什么区别?

需注意兼容性变更,如不再支持 STRALGO 命令,替换为 LCS 命令;不再支持 Lua 脚本中的 allow-oom flag。

7.0 版本的多部分 AOF 有什么优势?

将 AOF 文件拆分为基础文件、增量文件和清单文件,避免重写开销,提升持久化效率,降低 IO 压力。

Redis 7.0 集群新配置参数相比 6.0 有什么区别?

7.0 配置参数中 listpack 是什么?

listpack 是用来替代 ziplist 的新数据结构,在 7.0 版本已经没有 ziplist 的配置了,可减少内存碎片。