本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
資料分層
組成複寫群組且使用 r6gd 系列節點類型的叢集會在記憶體和本機 SSD (固態硬碟) 儲存之間進行資料分層。除了將資料存放在記憶體中之外,資料分層還能藉由在每個叢集節點中使用成本較低的固態硬碟 (SSD),為 Redis 工作負載提供全新的價格效能方案。非常適合定期存取高達 20% 的整體資料集的工作負載,以及在存取 SSD 資料時可容忍額外延遲的應用程式。
在具有資料分層的叢集上, ElastiCache 監視其儲存之每個項目的上次存取時間。當可用記憶體 (DRAM) 完全消耗時,會 ElastiCache使用最近最少使用的 (LRU) 演算法,將不常存取的項目從記憶體自動移至 SSD。隨後存取 SSD 上的資料時,在處理要求之前, ElastiCache 會自動且非同步地將其移回記憶體。如果您的工作負載只會定期存取其資料的子集,則資料分層是以符合成本效益的方式擴展容量的最佳方式。
請注意,使用資料分層時,金鑰本身一律會保留在記憶體中,而 LRU 則會控制記憶體與磁碟上值的位置。一般而言,建議在使用資料分層時,金鑰大小小於您值的大小。
資料分層專為盡量降低對應用程式工作負載的效能影響所設計。例如,假設 500 個位元組的字串值,與請求在記憶體中的資料相比,可以預期請求存放在 SSD 上的資料時會有額外 300 微秒的延遲。
使用最大的資料分層節點大小 (cache.r6gd.16xlarge),可以在單一 500 個節點的叢集中存放高達 1 PB (使用 1 個僅供讀取複本時為 500 TB)。資料分層與中支援的所有 Redis 命令和資料結構相容。 ElastiCache不需要任何用戶端變更就能使用此功能。
最佳實務
建議遵循下列最佳實務:
資料分層非常適合定期存取高達 20% 的整體資料集的工作負載,以及在存取 SSD 資料時可容忍額外延遲的應用程式。
使用資料分層節點上可用的 SSD 容量時,建議值的大小大於金鑰大小。項目在 DRAM 和 SSD 之間移動時,金鑰將一律保留在記憶體中,而且只有值會移至 SSD 層。
限制
資料分層具有下列限制:
只能在屬於複寫群組一部分的叢集上使用資料分層。
使用的節點類型必須來自 r6gd 系列,該系列在下列區域可用:
us-east-2
、us-east-1
、us-west-2
、us-west-1
、eu-west-1
、eu-central-1
、eu-north-1
、eu-west-3
、ap-northeast-1
、ap-southeast-1
、ap-southeast-2
、ap-south-1
、ca-central-1
和sa-east-1
。必須使用 Redis 6.2 或更新版本的引擎。
無法將 r6gd 叢集的備份還原到另一個叢集,除非該叢集也使用 r6gd。
無法將備份匯出到 Amazon S3 以用於資料分層叢集。
在 r6gd 節點類型上執行的叢集不支援線上遷移。
不支援從資料分層叢集 (例如,使用 r6gd 節點類型的叢集) 擴展到未使用資料分層的叢集 (例如,使用 r6g 節點類型的叢集)。如需詳細資訊,請參閱 縮放 ElastiCache 為雷迪斯 。
使用 Redis 7.0.7 版及更新版本的資料分層的叢集上支援自動擴展。如需更多資訊,請參閱Redis 叢集 ElastiCache 的 Auto Scaling
資料分層僅支援
volatile-lru
、allkeys-lru
、volatile-lfu
、allkeys-lfu
和noeviction
最大記憶體政策。Redis 7.0.7 版及更新版本支援無分支儲存。如需詳細資訊,請參閱 同步與備份的實作方式。
大於 128 MiB 的項目不會移至固態硬碟。
定價
與 R6g 節點 (僅記憶體) 相比,R6gd 節點的總容量 (記憶體 + SSD) 多出 4.8 倍,而且在以最大使用率執行時,可協助您節省 60% 以上的成本。如需詳細資訊,請參閱ElastiCache 定價
監控
ElastiCache by Redis 提供專為監視使用資料分層的效能叢集而設計的指標。若要監控與 SSD 相比的 DRAM 中項目比例,您可以使用 Redis 的指標中的 CurrItems
指標。您可以按以下方式計算百分比:(CurrItems 維度:階層 = 記憶體 * 100)/(沒CurrItems 有維度篩選條件)。
如果設定的收回原則允許,則 ElastiCache Redis 會在記憶體中的項目百分比減少到 5% 以下時開始收回項目。在設定了 noeviction 原則的節點上,寫入作業會收到記憶體不足錯誤。
仍然建議您考慮向外延展為已啟用叢集模式的叢集,或在記憶體中的項目百分比減少到 5% 以下時擴展已停用叢集模式的叢集。如需縮放的詳細資訊,請參閱擴展 Redis (啟用叢集模式) 中的叢集。如需使用資料分層之 Redis 叢集指標的詳細資訊,請參閱。Redis 的指標
使用資料分層
在建立叢集做為複寫群組的一部分時,可以從 r6gd 系列中選取節點類型來使用資料分層,例如cache.r6gd.xlarge。選取該節點類型會自動啟用資料分層。
如需有關建立叢集的詳細資訊,請參閱 建立叢集。
使用建立複製群組時 AWS CLI,您可以從 r6gd 系列中選取節點類型 (例如 cache .r6gd.xlarge) 並設定參數來使用資料分層。--data-tiering-enabled
從 r6gd 系列中選取節點類型時,無法選擇退出資料分層。如果您設定 --no-data-tiering-enabled
參數,操作將會失敗。
若為 Linux、macOS 或 Unix:
aws elasticache create-replication-group \ --replication-group-id redis-dt-cluster \ --replication-group-description "Redis cluster with data tiering" \ --num-node-groups 1 \ --replicas-per-node-group 1 \ --cache-node-type cache.r6gd.xlarge \ --engine redis \ --cache-subnet-group-name default \ --automatic-failover-enabled \ --data-tiering-enabled
針對 Windows:
aws elasticache create-replication-group ^ --replication-group-id redis-dt-cluster ^ --replication-group-description "Redis cluster with data tiering" ^ --num-node-groups 1 ^ --replicas-per-node-group 1 ^ --cache-node-type cache.r6gd.xlarge ^ --engine redis ^ --cache-subnet-group-name default ^ --automatic-failover-enabled ^ --data-tiering-enabled
執行此操作之後,將會看到類似如下的回應:
{ "ReplicationGroup": { "ReplicationGroupId": "redis-dt-cluster", "Description": "Redis cluster with data tiering", "Status": "creating", "PendingModifiedValues": {}, "MemberClusters": [ "redis-dt-cluster" ], "AutomaticFailover": "enabled", "DataTiering": "enabled", "SnapshotRetentionLimit": 0, "SnapshotWindow": "06:00-07:00", "ClusterEnabled": false, "CacheNodeType": "cache.r6gd.xlarge", "TransitEncryptionEnabled": false, "AtRestEncryptionEnabled": false } }
在資料分層啟用的情況下,將資料從備份還原到叢集
您可以使用 (Console)、() 或 (ElastiCache API) 啟用資料分層,將備份還原至新叢集。AWS CLI當使用 r6gd 系列中的節點類型建立叢集時,會啟用資料分層。
在資料分層啟用的情況下,將備份還原到新叢集 (主控台)
-
請登入 AWS Management Console 並開啟 ElastiCache 主控台,網址為 https://console.aws.amazon.com/elasticache/
。 -
從導覽窗格,選擇 Backups (備份)。
-
在備份清單中,選擇您要從中還原之備份名稱左側的方塊。
-
選擇 Restore (還原)。
-
完成 Restore Cluster (還原叢集) 對話方塊。務必完成所有必填欄位,以及您想要變更預設值的任何其他欄位。
-
Cluster ID (叢集 ID - 必要。新叢集的名稱。
-
Cluster mode enabled (scale out) (啟用叢集模式 (水平擴展)) - 針對Redis (啟用叢集模式) 叢集選擇此選項。
-
節點類型 – 指定 cache.r6gd.xlarge 或任何其他 r6gd 系列中的節點類型。
-
Number of Shards (碎片數) - 選擇您要讓新叢集具備的碎片 (API/CLI:節點群組) 數。
-
Replicas per Shard (每個碎片的複本數) - 選擇您要讓每個碎片具備的僅供讀取複本節點數。
-
Slots and keyspaces (位置和 Keyspace) - 選擇您要如何將索引鍵分佈到不同的碎片中。如果您選擇指定金鑰分佈,請指定每個碎片的金鑰範圍,以完成資料表。
-
Availability zone(s) (可用區域) - 指定您要如何選取叢集的可用區域。
-
Port (連接埠) - 只有在您希望新叢集使用不同的連接埠時,才變更此選項。
-
Choose a VPC (選擇 VPC) - 選擇要在其中建立此叢集的 VPC。
-
Parameter Group (參數群組) - 選擇參數群組,為所選節點類型的 Redis 額外負荷保留足夠的記憶體。
-
-
當您滿意設定後,請選擇 Create (建立)。
如需有關建立叢集的詳細資訊,請參閱 建立叢集。
使用建立複製群組時 AWS CLI,依預設會使用資料分層,方法是從 r6gd 系列中選取節點類型,例如 cache .r6gd.xlarge 並設定參數。--data-tiering-enabled
從 r6gd 系列中選取節點類型時,無法選擇退出資料分層。如果您設定 --no-data-tiering-enabled
參數,操作將會失敗。
若為 Linux、macOS 或 Unix:
aws elasticache create-replication-group \ --replication-group-id redis-dt-cluster \ --replication-group-description "Redis cluster with data tiering" \ --num-node-groups 1 \ --replicas-per-node-group 1 \ --cache-node-type cache.r6gd.xlarge \ --engine redis \ --cache-subnet-group-name default \ --automatic-failover-enabled \ --data-tiering-enabled \ --snapshot-name
my-snapshot
若為 Linux、macOS 或 Unix:
aws elasticache create-replication-group ^ --replication-group-id redis-dt-cluster ^ --replication-group-description "Redis cluster with data tiering" ^ --num-node-groups 1 ^ --replicas-per-node-group 1 ^ --cache-node-type cache.r6gd.xlarge ^ --engine redis ^ --cache-subnet-group-name default ^ --automatic-failover-enabled ^ --data-tiering-enabled ^ --snapshot-name
my-snapshot
執行此操作之後,將會看到類似如下的回應:
{ "ReplicationGroup": { "ReplicationGroupId": "redis-dt-cluster", "Description": "Redis cluster with data tiering", "Status": "creating", "PendingModifiedValues": {}, "MemberClusters": [ "redis-dt-cluster" ], "AutomaticFailover": "enabled", "DataTiering": "enabled", "SnapshotRetentionLimit": 0, "SnapshotWindow": "06:00-07:00", "ClusterEnabled": false, "CacheNodeType": "cache.r6gd.xlarge", "TransitEncryptionEnabled": false, "AtRestEncryptionEnabled": false } }