Important
Azure Cache for Redis は、すべての SKU の提供終了タイムラインを発表しました。 できるだけ早く既存の Azure Cache for Redis インスタンスを Azure Managed Redis に移行することをお勧めします。
提供終了の詳細については、以下を参照してください。
この記事では、Azure Cache for Redis でのメモリ管理のベスト プラクティスについて説明します。
適切な削除ポリシーを選択する
お使いのアプリケーションで機能する削除ポリシーを選びます。 Azure Cache for Redis の既定のポリシーは volatile-lruです。つまり、 EXPIRE などのコマンドで Time to Live (TTL) 値が設定されているキーのみが削除の対象となります。 TTL 値を持つキーがない場合、システムはキーを削除しません。 メモリ不足の場合にシステムでキーの削除を許可する場合は、 allkeys-lru ポリシーを検討してください。
キーの有効期限を設定する
メモリプレッシャーによる退避により、サーバーの負荷が高くなることがあります。 キーの有効期限の値を設定して、メモリ不足が発生するまで待機するのではなく、事前にキーを削除します。 詳細については、Redis EXPIRE コマンドと EXPIREAT コマンドのドキュメントを参照してください。
メモリの断片化を最小限に抑える
キー値が大きいと、削除時にメモリが断片化し、メモリ使用量が多く、サーバーの負荷が高くなる可能性があります。
メモリ使用量の監視
メモリ使用量を監視 して、メモリ不足がないようにします。 問題が 発生する前にキャッシュをスケーリングする機会を提供するアラートを作成します。
maxmemory-reserved の設定を構成する
システムの応答性を最大化するために、maxmemory-reserved 設定を構成します。 書き込み負荷の高いワークロードや、キャッシュに 100 KB 以上の値を格納する場合は、十分な予約設定が特に重要です。
maxmemory-reserved設定では、フェールオーバー中のレプリケーションなどのキャッシュ以外の操作用に予約された、クラスター内のインスタンスあたりのメモリ量 (MB 単位) が構成されます。 この値を設定すると、負荷が変化するときでも、Redis サーバーの稼働状態がより安定します。maxfragmentationmemory-reserved設定では、メモリの断片化に対応するために予約された、クラスター内のインスタンスあたりのメモリ量を MB 単位で構成します。 この値を設定すると、キャッシュがいっぱいになった場合や、キャッシュがほとんどいっぱいで断片化の割合が高い場合でも、Redis サーバーの動作がより安定します。
これらの操作のためにメモリが予約されている場合、キャッシュされたデータを格納することはできません。 既定では、キャッシュを作成すると、使用可能なメモリの約 10% が maxmemory-reserved用に予約され、さらに 10 個の% が maxfragmentationmemory-reserved用に予約されます。 書き込み負荷が大きい場合は、予約済みの量を増やすことができます。
maxmemory-reservedとmaxfragmentationmemory-reservedで使用できる範囲は、maxmemoryの 10%-60% です。 これらの値を 10% より小さく、または 60%より高く設定しようとすると、再評価され、最小値が 10%、最大値が 60% に設定されます。
キャッシュをスケールアップまたはスケールダウンすると、maxmemory-reserved と maxfragmentationmemory-reserved の設定の両方が、キャッシュ サイズに比例して自動的にスケーリングされます。 たとえば、 maxmemory-reserved が 6 GB のキャッシュで 3 GB に設定されていて、12 GB のキャッシュにスケーリングすると、スケーリング中に設定が自動的に 6 GB に更新されます。 スケールダウンすると、逆になります。
maxmemory-reservedまたはmaxfragmentationmemory-reservedメモリ予約の値を変更すると、既に実行されている大量のデータを含むキャッシュに与える影響を検討してください。 たとえば、予約値が 10% の最小値に設定された 53 GB のキャッシュがある場合、システムで使用可能な最大メモリは約 42 GB です。 現在の used_memory または used_memory_rss の値のいずれかが 42 GB を超える場合、 used_memory と used_memory_rss の両方が 42 GB を下回るまで、システムはデータを削除する必要があります。
削除することによってサーバーの負荷やメモリの断片化が増える可能性もあります。
used_memory や used_memory_rss などのキャッシュ メトリックの詳細については、「独自のメトリックを作成する」を参照してください。
Note
Azure PowerShell、Azure CLI、または REST API を使用してプログラムでキャッシュをスケールアップまたはスケールダウンすると、含まれる maxmemory-reserved または maxfragmentationmemory-reserved 設定は更新要求の一部として無視されます。 スケーリングの変更のみが受け入れられます。 スケーリング操作の完了後にメモリ設定を更新できます。