我想疑難排解 Redis 備份 (.rdb) 檔案小於 ElastiCache for Redis 自我設計叢集中 BytesUsedForCache 指標的情況。
解決方法
BytesUsedForCache 指標包含所有用途的位元組,例如實際金鑰大小、標頭和記憶體分割。在 Redis 被動或主動以非同步方式移除過期金鑰前,過期金鑰也會耗用記憶體。如需詳細資訊,請參閱 Redis 網站上的 EXPIRE。
ElastiCache 會使用分支和無分支備份程序傾印磁碟上的所有金鑰,藉此建立 .rdb 檔案。您的 .rdb 檔案可能小於 BytesUsedForCache 指標,因為該檔案不使用指標或過期金鑰,也不包含記憶體分割、中繼資料和緩衝區。
例如,假設您的 Redis 叢集顯示 BytesUsedForCache 為 15 GiB。如果備份是在有大量讀取和寫入要求時啟動,則快取大小可能落在 10 GiB 到 12 GiB 之間。這是因為備份不包含過期金鑰、指標、記憶體分割、中繼資料和緩衝區。
若要確認備份的資料完整性,請使用 Redis 的 Keyspace 或 DBSIZE 指令。如需詳細資訊,請參閱 Redis 網站上的 Keyspace 和 DBSIZE。請比較原始叢集中的金鑰數目,以及從 .rdb 檔案還原的叢集中的金鑰數目,確認快照建立和還原之間沒有發生任何金鑰插入、刪除或移出動作。如需詳細資訊,請參閱 Redis 網站上的 Why does my replica have a different number of keys than its master instance?
**注意:**ElastiCache 備份中的快取大小是根據建立快照時的 Redis used_memory 參數計算,這是未壓縮快取大小的估計值。如需詳細資訊,請參閱 Redis 網站上的 INFO 資訊。如果您將備份快照匯出至 Amazon Simple Storage Service (Amazon S3),則會匯出已壓縮的序列化檔案大小。
相關資訊
快照和還原