ホームページ  >  記事  >  データベース  >  Redis メモリの監視と管理

Redis メモリの監視と管理

齐天大圣
齐天大圣オリジナル
2020-05-25 14:10:321823ブラウズ

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 つの単語がよく登場しますが、その意味は次のとおりです。

  • 最近最も使用されていない

  • 最も使用頻度が低い

  • ##すべてのリサイクル戦略とその意味を見てみましょう:

    noeviction: デフォルト ポリシー、キーは削除されません。最大メモリを超えると、書き込みコマンドはすべて拒否され、読み取りコマンドのみが応答します
  • volatile-lru: lru アルゴリズムに従って期限切れのキーを削除します。削除できるキーがない場合は、noeviction 戦略に戻ります。
  • allkeys-lru: キーの有効期限が切れているかどうかに関係なく、占有メモリが maxmeory 未満になるまで、lru アルゴリズムに従ってキーを削除します。
  • allkeys-lfu: 上記と同じ意味ですが、削除には lfu アルゴリズムが使用されます。
  • allkeys-random: 最大メモリに達したときにキーをランダムに削除します。
  • volatile-ttl: 期限切れが近づいているキーを削除します。そうでない場合は、noeviction にフォールバックします。

メモリの最適化上記の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。