メモリ管理

削除ポリシー

お使いのアプリケーションで機能する削除ポリシーを選択します。 Azure Cache for Redis の既定のポリシーは volatile-lru です。これは、EXPIRE などのコマンドを使用して TTL 値が設定されているキーのみが削除対象となることを意味します。 TTL 値を持つキーがない場合は、システムはどのキーも削除しません。 メモリ不足のときに任意のキーをシステムに削除させるようにする場合は、allkeys-lru ポリシーを検討することができます。

キーの有効期限

キーに有効期限値を設定します。 有効期限が切れると、メモリ負荷が発生するまで待たずに、事前にキーが削除されます。 メモリ不足のために削除が開始される場合、サーバーにさらに多くの負荷が発生するおそれがあります。 詳細については、EXPIRE コマンドと EXPIREAT コマンドに関するドキュメントを参照してください。

メモリの断片化を最小限に抑える

大きな値を設定すると、削除のためにメモリが断片化され、メモリの使用量やサーバーの負荷が高くなる可能性があります。

メモリ使用量の監視

メモリ使用量の監視機能を追加して、メモリ不足に陥らないように、問題が発生する前にキャッシュをスケーリングできるようにします。

maxmemory-reserved の設定を構成する

システムの応答性を向上させるために、maxmemory-reserved の設定を構成します。

  • 書き込み負荷の高いワークロードにとって、またはキャッシュに 100 KB 以上の値を格納している場合は特に、十分な予約設定にすることが重要です。 既定では、キャッシュを作成するときに、使用可能なメモリの約 10% が maxmemory-reserved 用に予約されています。 別の 10% が maxfragmentationmemory-reserved 用に予約されています。 書き込み負荷が高い場合は、予約された量を増やします。

  • maxmemory-reserved 設定は、フェールオーバーに伴うレプリケーションなどのキャッシュ以外の操作のために予約されているメモリの量を、クラスター内のインスタンスあたりの MB 単位で構成するものです。 この値を設定すると、負荷が変化するときでも、Redis サーバーの稼働状態がより安定します。 大量のデータを書き込むワークロードでは、この値を高く設定する必要があります。 そのような操作に予約されているメモリは、キャッシュ データの保存には使用できません。 maxmemory-reserved の使用できる範囲は、maxmemory の 10% から 60% です。 これらの値を 10% 未満または 60% より大きい値に設定すると、再評価され、最小値 10% と最大値 60% に設定されます。 値はメガバイト単位でレンダリングされます。

  • maxfragmentationmemory-reserved 設定では、メモリの断片化に対応するために予約されるメモリ量を、クラスター内のインスタンスあたりの MB 単位で構成します。 この値を設定すると、キャッシュがいっぱいになった場合や、キャッシュがほとんどいっぱいで断片化の割合が高い場合でも、Redis サーバーの動作がより安定します。 そのような操作に予約されているメモリは、キャッシュ データの保存には使用できません。 maxfragmentationmemory-reserved の使用できる範囲は、maxmemory の 10% から 60% です。 これらの値を 10% 未満または 60% より大きい値に設定すると、再評価され、最小値 10% と最大値 60% に設定されます。 値はメガバイト単位でレンダリングされます。

  • 新しいメモリ予約値 (maxmemory-reserved または maxfragmentationmemory-reserved) を選択する際には、この変更によって既に実行している大量のデータが入ったキャッシュがどのような影響を受けるのかを考慮する必要があります。 たとえば、53 GB のキャッシュに 49 GB のデータが入っているときに、予約値を 8 GB に変更すると、システムで利用可能な最大メモリは 45 GB まで低下します。 現在の used_memory または used_memory_rss が新しい上限値の 45 GB よりも大きい場合、システムでは、used_memoryused_memory_rss の両方が 45 GB を下回るまでデータを削除する必要があります。 削除することによってサーバーの負荷やメモリの断片化が増える可能性もあります。 used_memoryused_memory_rss などのキャッシュ メトリックの詳細については、「独自のメトリックを作成する」を参照してください。

Note

キャッシュをスケールアップまたはスケールダウンすると、maxmemory-reservedmaxfragmentationmemory-reserved の設定の両方が、キャッシュ サイズに比例して自動的にスケーリングされます。 たとえば、6 GB のキャッシュで maxmemory-reserved が 3 GB に設定されている場合、キャッシュを 12 GB にスケーリングすると、スケーリングの間に設定が 6 GB に自動的に更新されます。 スケールダウンすると、逆の処理が行われます。 PowerShell、CLI、または Rest API を使用してプログラムによってキャッシュをスケールアップまたはスケールダウンする場合、更新要求の一部としての maxmemory-reserved または maxfragmentationmemory-reserved は無視されます。 スケーリングの変更のみが受け入れられます。 これらのメモリ設定は、スケーリング操作の完了後に更新できます。

次のステップ