

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 與 Redis OSS 的主要引擎版本行為和相容性差異
<a name="VersionManagementConsiderations"></a>

**重要**  
以下頁面的結構目的是指出版本控制之間所有不相容的差異，並告知您升級至較新版本控制時應注意的事項。此清單包含您在升級時可能遇到的版本控制不相容問題。  
您可以直接從目前的 Redis OSS 版本升級到最新的 Redis OSS 版本，而不需要循序升級。例如，您可以直接從 Redis OSS 3.0 版升級至 7.0 版。

Redis OSS 版本是以語意版本識別，該版本包含主要、次要和修補程式元件。例如，在 Redis OSS 4.0.10 中，主要版本為 4、次要版本為 0，而修補程式版本為 10。這些值一般會根據下列慣例遞增：
+ 主要版本適用於 API 不相容的變更
+ 次要版本適用於以回溯相容方式新增的新功能
+ 修補程式版本適用於回溯相容的錯誤修正和非功能變更

我們建議您一律使用指定 **major.minor** 版本內的最新修補程式版本，以便獲得最新的效能和穩定性改善。從適用於 Redis OSS 的 ElastiCache 6.0 版開始，ElastiCache 將為每個 Redis OSS 次要版本提供單一版本，而不是提供多個修補程式版本。ElastiCache 將自動管理執行中叢集的修補程式版本，以確保效能改善和安全性增強。

同時建議您定期升級至最新主要版本，因為大部分主要改進功能並未向後移植至舊版。隨著 ElastiCache 將可用性擴展到新AWS區域，ElastiCache for Redis OSS 支援新區域的兩個最新 **major.minor** 版本。例如，如果新AWS區域啟動且 Redis OSS 的最新 major.minor ElastiCache 版本為 **7.0** 和 **6.2**，ElastiCache 將在新AWS區域中支援 Redis OSS 版本 **7.0** 和 **6.2。**隨著較新版本的 ElastiCache for Redis OSS 發行，ElastiCache 將繼續為新發行的版本新增支援。若要深入了解如何選擇 ElastiCache 的區域，請參閱[選擇區域和可用區域](https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/RegionsAndAZs.html#SupportedRegions)。

進行跨主要或次要版本的升級時，請考慮下列清單，其中包括隨時間與 Redis OSS 一起發佈的行為和回溯不相容的變更。

## Redis OSS 7.0 行為和回溯不相容的變更
<a name="VersionManagementConsiderations-redis70"></a>

如需變更的完整清單，請參閱 [Redis OSS 7.0 版本備註。](https://raw.githubusercontent.com/redis/redis/7.0/00-RELEASENOTES)
+ `SCRIPT LOAD` 與 `SCRIPT FLUSH` 不再傳播到複本。如果您需要一些指令碼的耐用性，建議您考慮使用 [Redis OSS 函數](https://valkey.io/topics/functions-intro/)。
+ 根據預設，新 ACL 使用者現在會封鎖 Pubsub 頻道。
+ `LCS` 命令已取代 `STRALGO` 命令。
+ 已變更 `ACL GETUSER` 的格式，所有欄位皆會顯示標準存取字串模式。若您使用 `ACL GETUSER` 進行自動化，則應確認其能處理任一格式。
+ 已變更 `SELECT`、`WAIT`、`ROLE`、`LASTSAVE`、`READONLY`、`READWRITE` 和 `ASKING` 的 ACL 類別。
+ 現在，每個子命令的命令統計資料由 `INFO` 命令顯示，而非顯示於頂層容器命令。
+ 在部分邊緣情況下，`LPOP`、`RPOP`、`ZPOPMIN` 和 `ZPOPMAX` 命令的傳回值已變更。若您使用這些命令，則應確認版本備註，並評估您是否受到影響。
+ `SORT` 和 `SORT_RO` 命令現在需存取整個金鑰空間，以使用 `GET` 和 `BY` 引數。

## Redis OSS 6.2 行為和回溯不相容的變更
<a name="VersionManagementConsiderations-redis62"></a>

如需變更的完整清單，請參閱 [Redis OSS 6.2 版本備註。](https://raw.githubusercontent.com/redis/redis/6.2/00-RELEASENOTES)
+ `TIME`、`ECHO`、`ROLE` 和 `LASTSAVE` 命令的 ACL 旗標已變更。這可能會導致先前允許的命令遭拒，反之亦然。
**注意**  
這些命令都不會修改或授予資料存取權。
+ 從 Redis OSS 6.0 升級時，從映射回應傳回至 lua 指令碼的金鑰/值對順序會變更。如果您的指令碼使用或`redis.setresp()`傳回映射 (Redis OSS 6.0 的新功能），請考慮指令碼可能會在升級時中斷的影響。

## Redis OSS 6.0 行為和回溯不相容的變更
<a name="VersionManagementConsiderations-redis60"></a>

如需變更的完整清單，請參閱 [Redis OSS 6.0 版本備註。](https://raw.githubusercontent.com/redis/redis/6.0/00-RELEASENOTES)
+ 允許的資料庫數量上限已從 120 萬降低至 1 萬。預設值為 16，我們不鼓勵使用大於此的值，因為發現效能和記憶體問題。
+ 將`AutoMinorVersionUpgrade`參數設定為是，ElastiCache 將透過自助式更新管理次要版本升級。這將透過自助更新行銷活動，經由標準客戶通知管道來處理。如需詳細資訊，請參閱 [ElastiCache 中的自助服務更新](Self-Service-Updates.md)。

## Redis OSS 5.0 行為和回溯不相容的變更
<a name="VersionManagementConsiderations-redis50"></a>

如需變更的完整清單，請參閱 [Redis OSS 5.0 版本備註。](https://raw.githubusercontent.com/redis/redis/5.0/00-RELEASENOTES)
+ 指令碼是依效果複寫，而不是在複本上重新執行指令碼。這一般會改善效能，但可能會增加在主要項目和複本之間複寫的資料量。您可以選擇還原至先前的行為，該行為僅適用於 ElastiCache 5.0 版的 Redis OSS。
+ 如果您是從 Redis OSS 4.0 升級，LUA 指令碼中的某些命令會以與舊版中的不同順序傳回引數。在 Redis OSS 4.0 中，Ris OSS 會以詞典方式排序一些回應，讓回應具有決定性，當指令碼依效果複寫時，不會套用此排序。
+ Inn Redis OSS 5.0.3 及更高版本，ElastiCache for Redis OSS 會將部分 IO 工作卸載至執行個體類型上具有超過 4 個 VCPUs背景核心。這可能會變更 Redis OSS 的效能特性，並變更某些指標的值。如需詳細資訊，請參閱[應監控哪些指標？](CacheMetrics.WhichShouldIMonitor.md)，了解您是否需要變更您監控的指標。

## Redis OSS 4.0 行為和回溯不相容的變更
<a name="VersionManagementConsiderations-redis40"></a>

如需變更的完整清單，請參閱 [Redis OSS 4.0 版本備註。](https://raw.githubusercontent.com/redis/redis/4.0/00-RELEASENOTES)
+ 慢速日誌現在會記錄另外兩個引數，即用戶端名稱和位址。除非您明確依賴每個包含 3 個值的慢速日誌項目，否則此變更應回溯相容。
+ `CLUSTER NODES` 命令現在會傳回略為不同的格式，不回溯相容。建議客戶不要使用此命令了解叢集中的節點，而應使用 `CLUSTER SLOTS`。

## 過去的 EOL
<a name="VersionManagementConsiderations-redis3x-scheduled"></a>

### Redis OSS 3.2 行為和回溯不相容的變更
<a name="VersionManagementConsiderations-redis32"></a>

如需變更的完整清單，請參閱 [Redis OSS 3.2 版本備註。](https://raw.githubusercontent.com/redis/redis/3.2/00-RELEASENOTES)
+ 此版本沒有需注意的相容性變更。

如需詳細資訊，請參閱[適用於 Redis OSS 生命週期結束排程的 ElastiCache 版本](engine-versions.md#deprecated-engine-versions)。

### Redis OSS 2.8 行為和回溯不相容的變更
<a name="VersionManagementConsiderations-redis28"></a>

如需變更的完整清單，請參閱 [Redis OSS 2.8 版本備註。](https://raw.githubusercontent.com/redis/redis/2.8/00-RELEASENOTES)
+ 從 Redis OSS 2.8.22 開始，ElastiCache for Redis OSS 不再支援 Redis OSS AOF。資料需要持久保存時，建議使用 MemoryDB。
+ 從 Redis OSS 2.8.22 開始，ElastiCache for Redis OSS 不再支援將複本連接至 ElastiCache 中託管的主要節點。升級時，外部複本將中斷連線，且無法重新連線。我們建議您使用在 Redis OSS 6.0 中提供的用戶端快取，作為外部複本的替代方案。
+ 如果沒有金鑰，`TTL` 和 `PTTL` 命令現在會傳回 -2，而如果有金鑰，但沒有關聯的過期，則傳回 -1。Redis OSS 2.6 和舊版用於針對這兩個條件傳回 -1。
+ 如果不使用 `STORE` 選項，具 `ALPHA` 的 `SORT` 現在會根據地區定序設定排序。

如需詳細資訊，請參閱[適用於 Redis OSS 生命週期結束排程的 ElastiCache 版本](engine-versions.md#deprecated-engine-versions)。