Redis 内のすべてのデータはメモリに保存されるため、メモリの監視と管理は Redis にとって非常に重要です。メモリの監視、管理、最適化という 3 つの側面から Redis メモリについて説明しましょう。
メモリ監視
redis は、メモリ使用量を表示するための infomemory コマンドを提供します。このコマンドは大量のデータを表示します。ここでは、より重要なデータの一部のみを確認します。
used_memory:1146648 (redis アロケーターによって割り当てられたメモリの量)
used_memory_human:1.09M (読みやすい形式で表示)
used_memory_rss:4358144 (redis によって占有される合計メモリ)
used_memory_rss_human:4.16M (redis によって占有される合計メモリの読み取り可能な表示)
used_memory_peak:1229448 (userd_memory_peak ピーク)
used_memory_peak_human:1.17M
used_memory_overhead:857036 (バッファー、バックログ)など)
used_memory_startup:791384 (redis の起動によって消費されるメモリ)
used_memory_dataset:289612 (redis データによって占有されるメモリ)
used_memory_lua:37888 (lua スクリプトによって消費されるメモリ)
used_memory_lua_human:37.00K (読み取り可能な表示)
mem_fragmentation_ratio:4.02 (メモリ断片化率、used_memory_rss / used_memory)
mem_fragmentation_ratio が 1 より大きい場合、メモリ断片化があることを示します。値が低いほど、深刻な問題が発生します。断片化率。アプリケーションで許可されている場合は、redis を再起動して断片化率を減らすことができます。 0未満の場合はメモリ不足でスワップの一部が使用されていることを意味しますので注意が必要です。
メモリ管理
通常、redis のメモリ上限 maxmory を設定することをお勧めします。
方法は 2 つあります。変更するには
構成ファイルを変更します
127.0.0.1:6379> config set maxmemory 1G OK 127.0.0.1:6379> config rewrite OK最大値を設定する メモリには 2 つの機能があり、まず、redis が占有するメモリ サイズを制限して、物理メモリ サイズを超えないようにすることができます。さらに、最大メモリが設定されていて、redis が最大メモリを超えた場合、メモリ リサイクル戦略をトリガーできます (通常はキャッシュ シナリオに適用されます) Redis は最大メモリを動的に調整でき、サーバーがメモリが足りない場合はメモリを増やす必要があり、サーバーのメモリが増加した場合は、redis のメモリを動的に調整します。 また、redis のメモリ リサイクル ポリシー (maxmemory-policy) にはいくつかの構成があり、その中で LRU と LFU という 2 つの単語がよく登場しますが、その意味は次のとおりです。
メモリの最適化上記の Redis リサイクル戦略は、受動的削除戦略であり、アクティブに削除できます。 it 長期間アクセスされていないキー。 scan を使用してキーを走査し、オブジェクト ideltime を使用してキーのアイドル時間を表示し、長期間アクセスされていないキーを削除できます。
さらに、キーと値のオブジェクトを減らすことでメモリ使用量を削減することもできます。
127.0.0.1:6379> scan 0 1) "272" 2) 1) "story:course:3915" 2) "story:course:1681" 3) "story:course:4982" ……
たとえば、上記のキーを sy:cos:id に変更すると、キーの長さを短縮できます。 、値の場合、圧縮技術を使用して値の長さを短縮できます。 (圧縮すると CPU への負荷が増加するため、特定のアプリケーションに応じて適切に適用できます)
以上がRedis メモリの監視と管理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。