社区 瓦尔基 宣布发布 瓦尔基 9.1 — 一个高性能、开源(BSD 许可证)键值数据存储的新稳定版本,支持多种用例,例如缓存和消息队列,也可作为主数据库使用。该项目由以下机构支持: Linux 该基金会确保其作为开源代码持续可用。
该项目是 Redis 的一个分支,创建于……之后 其许可变更.
本次版本更新包含多项新功能,并在安全性、监控、性能和工具效率方面进行了改进。超过 80 人参与了此次版本更新。
主要变化
Lua 已移至单独的模块。
在 Valkey 9.1 中,Lua 脚本引擎已从主服务器分离,并移至一个独立的模块。这种分离减少了 Valkey 核心的攻击面,并允许管理员在不使用脚本时完全禁用 Lua。为了更清晰地了解系统中加载了哪些脚本引擎,INFO 命令现在新增了一个响应部分:脚本引擎。新增安全修复。
稳定版本 9.1.0 修复了三个漏洞:客户端解锁机制中的释放后使用漏洞、7RESTORE 命令中的无效内存访问漏洞,以及在 Lua/函数代码执行期间使用 yield 语句进行完全同步时存在的释放后使用漏洞。这些漏洞在漏洞说明中分别列为 CVE-2026-23479、CVE-2026-25243 和 CVE-2026-23631。数据库级 ACL。
新增了数据库级访问控制系统。这使得在多用户配置中可以实现更精细的权限控制,并且超越了整个 Valkey 实例的全局访问规则。自动重新加载TLS证书。
Valkey 9.1 现在支持 TLS 证书自动重载。对于管理员而言,这意味着在轮换证书时可以减少手动操作步骤,并使安全部署的操作更加便捷。HGETDEL 新团队。
该命令以原子方式从哈希结构中检索和删除一个或多个字段。这对于队列或一次性数据消耗等场景尤其有用,因为以前需要通过事务将 HGET 和 HDEL 操作结合起来。MSETEX 新团队。
MSETEX 允许您使用单个命令设置多个共享生命周期的密钥。以前,这种情况需要多次调用 SETEX 或通过管道组合调用 SET 和 EXPIRE 命令。新命令减少了调用次数,并简化了会话和临时数据的典型代码。新的 CLUSTERSCAN 团队。
现在,集群只需一个命令即可扫描所有节点上的键。以前,客户端必须手动在每个节点上运行 SCAN 命令并合并结果。CLUSTERSCAN 简化了客户端库、管理工具以及操作任务,例如按模式或类型在整个集群中搜索键。优化字符串的内存消耗。
对于长度小于 128 字节的字符串,内部指针优化已被证明可以减少高达 20% 的内存消耗。这对于存储大量小值的典型缓存工作负载尤为重要。有序集合占用内存更少。
跳跃表优化可将有序数据集的内存消耗降低高达 10%。对有序数据集的操作,包括 ZRANGEBYSCORE 和 ZRANGEBYLEX 等查询,也得到了加速。通过重新哈希加速工作。
当键空间增长时,内部哈希表重新分配通常会发生,而此次优化旨在降低延迟。发行说明还提到,由于增量页面释放,延迟峰值也有所降低。改进的 I/O 线程模型。
候选版本 9.1.0-rc2 重构了 I/O 线程交互模型,采用了无锁队列。版本说明指出吞吐量提升了 8% 至 17%。加快 GET 和 SET 的速度。
Valkey 现在默认尽可能使用硬件时钟,从而减少与时间相关的系统调用开销。该项目声称,GET 和 SET 操作的整体性能最多可提升 3%。更快速的大宗物品清除。
Valkey 现在会在 SREM、ZREM 和 HDEL 等操作期间暂时停止哈希表的内部调整大小,以避免不必要的重新哈希并加快批量删除元素的速度。AOF期间更高效地创建副本。
启用 AOF 创建副本时,系统现在会重用生成的 RDB 文件,而不是为初始 AOF 基础文件生成新的快照。这应该可以减少部署副本时不必要的开销。对 valkey-cli 和 valkey-benchmark 进行了改进。
valkey-cli 已通过 `--cluster-use-atomic-slot-migration` 参数为 `--cluster rebalance` 和 `--cluster reshard` 操作添加了原子槽迁移支持。valkey-benchmark 已添加 RPS 分布输出,以及 `--warmup` 和 `--duration` 参数,使性能测试更易于管理。
与生态系统中的 Valkey 9.1 单独或一起 相关项目正在推广中: Valkey 管理员 用于集群的可视化管理, Valkey 搜索 1.2 具备全文搜索、数值筛选、标签搜索和矢量搜索功能,以及客户端库。 瓦尔基滑翔.
Valkey 9.1 从性能角度来看是一项重大更新:减少了常用结构的内存占用,减少了内部重建期间的延迟,增加了集群和临时数据的新命令,并为生产安装提供了更准确的安全模型。
来源: linux.org.ru
