Redis バックアップ (.rdb) ファイルが ElastiCache クラスターの BytesUsedForCache メトリクスより常に小さいのはなぜですか?
最終更新日: 2022 年 7 月 1 日
Amazon ElastiCache for Redis を使用しています。Redis バックアップ (.rdb) ファイルが常にクラスターの BytesUsedForCache メトリクスより小さいのはなぜですか?
解決方法
BytesUsedForCache メトリクスには、すべての目的のためのバイトが含まれます。これには、実際のキーサイズ、ヘッダー、およびメモリの断片化が含まれます。また、有効期限が切れたキーも、Redis が受動的または能動的に非同期で削除するまでメモリを消費します。詳細については、Redis.io ウェブサイトの「Expire key seconds - How Redis expires keys」をご参照ください。
ElastiCache は、分岐ありと分岐なしの両方のバックアッププロセスを使用します。どちらのプロセスも、ディスクにすべてのキーをダンプして .rdb ファイルを作成します。.rdb ファイルは、ポインタや期限切れのキーを使用せず、メモリの断片化、メタデータ、バッファを処理しません。つまり、バックアップファイルのサイズは BytesUsedForCache メトリクスよりも小さくなります。
例えば、Redis クラスターで BytesUsedforCache が 15 GiB と表示される場合があります。また、クラスターで大量の読み取り/書き込みリクエストの間にバックアップが開始されたことを示す場合もあります。バックアッププロセスが完了すると、バックアップキャッシュサイズは 15 GiB ではなく 10 GiB または 12 GiB の範囲になります。これは、バックアップに期限切れのキーやポインターなどが含まれていないためです。
注:
- ElastiCache バックアップのキャッシュサイズは、スナップショット作成時の Redis used_memory から派生します。これは、非圧縮キャッシュサイズの推定値です。バックアップスナップショットを Amazon Simple Storage Service (Amazon S3) にエクスポートすると、シリアル化された圧縮ファイルサイズがエクスポートされます。
- バックアップのデータ整合性は、info keyspace または DBSIZE コマンドを使用して検証できます。元のクラスターと RDB から復元されたクラスターのキーの数を比較します。スナップショットの作成と復元の間にキーの挿入、削除、またはエビクションアクションが発生しないようにしてください。詳細については、Redis FAQの「Why does my replica have a different number of keys than its master instance?」(レプリカのキーの数がマスターインスタンスと異なるのはなぜですか?) を参照してください。