文档:发布和版本控制

Valkey 通常是软件堆栈中最关键的组成部分之一。因此,Valkey 的发布周期优先考虑高度稳定的版本,但代价是发布周期较慢。

所有 Valkey 版本均发布在 Valkey GitHub 仓库中。

版本控制

Valkey 稳定版本通常遵循 major.minor.patch 语义化版本控制方案。我们遵循语义化版本控制,以提供明确的向后兼容性保证。

在讨论兼容性时,我们指以下 API 契约:

  1. Valkey 命令,包括其输入、输出和定义的行为
  2. 可从 Lua 脚本执行的函数和 API
  3. RDB 版本
  4. 用于在主节点和副本之间建立和复制数据的协议
  5. Valkey 集群中节点间的协议
  6. Valkey 模块 API 接口
  7. 磁盘上的 AOF 格式

补丁版本

补丁版本发布时包含向后兼容的错误修复,不应引入新功能。

从之前的补丁版本升级应该是安全且无缝的。运行主从对或 Valkey 集群时,服务器运行在不同的补丁版本上应是安全的。

补丁版本还可能引入一些小改进,例如易于验证为安全的性能或内存优化。

次要版本

次要版本发布时包含以向后兼容方式添加的新功能。新功能的例子包括新命令、信息字段或配置参数。

从之前的次要版本升级应该是安全的,并且在使用默认服务器配置时不会在集群中的服务器之间引入不兼容性。

注意:次要版本可能包含新的命令和数据类型,这可能会在集群中的服务器之间引入不兼容性,但用户需要选择启用这些功能才能导致此类不兼容性。因此,不建议在 Valkey 集群中运行不同次要版本的服务器。用户应避免使用新功能,直到集群中的所有服务器都已升级。

命令在次要版本中也可能被标记为已弃用。已弃用的命令不会被移除,而是在同一次要版本中定义一个替代命令或使用该命令的替代方法。

主要版本

主要版本发布时包含重要功能,这些功能可能会破坏向后兼容性或改变关键性能特性。重要功能的例子包括更改现有命令的行为、移除先前已弃用的命令、更改配置的默认值以及为性能改进进行重大重构。

从之前的主要版本升级旨在是安全的,但应谨慎对待。在执行主要版本升级之前,您应仔细阅读发布说明。尽管主要版本可能会引入破坏性更改,但从主节点复制到副本的数据将始终以向后兼容的格式发送。您应始终在升级主节点之前升级副本,以确保数据一致性。

Valkey 社区力求尽可能少地进行向后不兼容的更改。当需要进行破坏性更改时,我们也将努力提供一种方法来减轻影响,而不会导致应用程序停机。

发布计划

Valkey 社区通常每年发布一个稳定的主要版本。在主要版本之间,会根据需要引入稳定的次要版本,每年至少发布一个次要版本。

发布候选版本

Valkey 的新次要和主要版本从 unstable 分支分支出一个初始发布候选分支开始,其名称形式为 major.minor,例如 7.2。第一个发布候选版本(即 rc1)一旦可用于开发目的和测试新版本即发布。发布候选版本将以补丁版本“0”开始,并采用 major.minor.patch-rcN 的形式,例如 7.2.0-rc1 之后是 7.2.0-rc2。在此阶段,新版本中的大多数新功能和更改已准备好进行审查,并且该版本发布是为了收集公众反馈。随后的发布候选版本每隔几周发布一次,主要用于根据用户输入修复错误和完善功能。

稳定发布

一旦开发结束且发布候选版本的反馈减少,它就准备好进行最终发布。此时,该版本被标记为稳定版,并以“0”作为其补丁级别版本发布。

补丁会根据需要发布,以修复高紧急性问题,或者当稳定版本累积了足够的修复以证明其合理性时。

支持

最新稳定版本始终得到全面支持和维护。

Valkey 社区将从次要版本首次发布之日起提供为期 3 年的维护支持,包括错误修复和所有安全修复的补丁发布。

Valkey 社区还将为每个主要版本的最新次要版本提供为期 5 年的扩展安全支持,从该版本首次发布之日起计算。用于此扩展安全支持的次要版本将在下一个主要版本发布后确定。Valkey 社区只会修补我们认为可能被利用的安全问题,这将由 TSC 自行决定。

如需就敏感事项和安全问题联系 TSC,请参阅 SECURITY.md

支持的版本列表

版本首次发布维护支持结束扩展安全支持结束
8.02024-09-152027-09-15N/A
7.22024-04-162027-04-162029-04-16

不稳定分支

Valkey 的开发分支位于 Valkey GitHub 仓库unstable 分支中。

此分支是大多数新功能正在开发中的源代码树。unstable 不被视为生产就绪:它可能包含严重错误、不完整的功能,并且可能不稳定。

然而,我们努力确保即使是不稳定分支在开发环境中大多数时候也能正常使用,没有重大问题。