メモリ管理
削除ポリシー
お使いのアプリケーションで機能する削除ポリシーを選択します。 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_memory
とused_memory_rss
の両方が 45 GB を下回るまでデータを削除する必要があります。 削除することによってサーバーの負荷やメモリの断片化が増える可能性もあります。used_memory
やused_memory_rss
などのキャッシュ メトリックの詳細については、「独自のメトリックを作成する」を参照してください。
Note
キャッシュをスケールアップまたはスケールダウンすると、maxmemory-reserved
と maxfragmentationmemory-reserved
の設定の両方が、キャッシュ サイズに比例して自動的にスケーリングされます。 たとえば、6 GB のキャッシュで maxmemory-reserved
が 3 GB に設定されている場合、キャッシュを 12 GB にスケーリングすると、スケーリングの間に設定が 6 GB に自動的に更新されます。 スケールダウンすると、逆の処理が行われます。
PowerShell、CLI、または Rest API を使用してプログラムによってキャッシュをスケールアップまたはスケールダウンする場合、更新要求の一部としての maxmemory-reserved
または maxfragmentationmemory-reserved
は無視されます。 スケーリングの変更のみが受け入れられます。 これらのメモリ設定は、スケーリング操作の完了後に更新できます。