ホームページ  >  記事  >  バックエンド開発  >  PHP が Redis を使用していてメモリが不足している場合はどうすればよいですか?

PHP が Redis を使用していてメモリが不足している場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2022-11-06 09:48:251625ブラウズ

php で Redis を使用する際のメモリ不足の解決策: 1. 設定ファイルまたはコマンドを通じて Redis の最大メモリ サイズを 100M に設定します; 2. 現在のメモリ削除ポリシーを取得します; 3. 「config set maxmemory」を通じて-policy allkeys- lru」コマンドを使用して、排除戦略を変更します。

PHP が Redis を使用していてメモリが不足している場合はどうすればよいですか?

本教程操作環境:windows7系统、PHP8.1版、Dell G3 電気。私たちは、Redis を使用するときに、Redis が使用できる最大の内部メモリを構成できます。 conf 構成ファイルに以下の構成ファイルを追加します。//Redis の最大占有範囲内保存サイズは 100M maxmemory 100mb

redis の構成ファイルは必ずしも使用されません。インストール対象は次の redis.conf です。ファイル、redis サービスを起動するときは、パラメータで redis の構成ファイルを指定できる

#2、コマンド修正を通じて

#Redis が実行をサポートするときは、コマンド修正によって保存されます大

#//設定Redis最大占有内保存サイズは100M 127.0.0.1:6379> config set maxmemory 100mb //設定された Redis 能力で使用される最大内部保存サイズ 127.0.0.1:6379> config get maxmemory 最大内部保存サイズが設定されていない場合、または最大内部保存サイズが 0 に設定されている場合、64 ビット オペレーティング システムでは内部保存サイズに制限はなく、32 ビット オペレーティング システムでは最大 3GB 内保存サイズを使用します。

Redis の内部ストレージ オプション

は、Redis の最大占有内部メモリ サイズを設定することができますが、内部ストレージが完了すると、Redis の場所にデータが追加されます。このような状況を処理するために Redis 上にセキュリティ ポリシーが定義されています:

noeviction(默认ポリシー)
: 書き込み要求に対してサービスを提供せず、直接返します (DEL 要求と部分特殊请求謝)
allkeys-lru

:すべてのキーの中から LRU 算法を使用して淘汰を実行volatile-lru:期間内に設定されたキーの中から LRU 演算法を使用して淘汰

allkeys-random

:すべてのキーの中の随机淘汰データ

volatile-random

:期間中に設定されたキーの中の随機淘汰

volatile-ttl
:期間中に設定されたキー中、キーの経過期間に基づいて淘汰が実行され、より早い経過期間のより優先的な淘汰

が使用されます volatile-lru

volatile-random

volatile-ttlこの 3 つのポリシー略時、キーがない場合は淘汰される可能性があり、noeviction一样は错误 どのように取得および設定内に存在する淘汰戦略略 获取当前内存淘汰戦略略:127.0.0.1:6379> config get maxmemory-policy

通过構成文件设置淘汰策略(修改redis.conf文件):maxmemory-policy allkeys-lru通过コマンド修改淘汰策略:127.0.0.1:6379> config set maxmemory-policy allkeys-lru
LRU 計算法

# What is LRU?

上で Redis を使用できることを確認しました最大内存使用完了、つまり LRU 算法を使用して内存淘汰を実行できます、那么何ですか LRU 算法呢?

LRU (Least Recent Used) は、最も最近使用されていないキャッシュ置換アルゴリズムです。メモリをキャッシュとして使用する場合、通常、キャッシュのサイズは固定です。キャッシュがいっぱいでキャッシュにデータを追加し続ける場合は、古いデータを削除し、新しいデータを保存するためにメモリ領域を解放する必要があります。このとき、LRUアルゴリズムを使用することができる。中心的な考え方は、データが最近使用されていない場合、将来使用される可能性は非常に小さいため、そのデータを削除できるということです。

Redis での LRU の実装

近似 LRU アルゴリズム

Redis は、近似 LRU アルゴリズムを使用します。従来の LRU アルゴリズムはまったく同じではありません。近似 LRU アルゴリズムは、ランダム サンプリングを通じてデータを削除し、毎回 5 つの (デフォルト) キーをランダムに選択し、最も最近使用されていないキーを削除します。

サンプルの数は、maxmemory-samples パラメーターを使用して変更できます。 例: maxmemory-samples 10 maxmenory-samples の構成が大きくなるほど、除外結果は厳密な LRU アルゴリズムに近づきます

近似を達成するために、Redis LRU アルゴリズムは、キーが最後にアクセスされた時刻を保存するために、各キーに追加の 24 ビット フィールドを追加します。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHP が Redis を使用していてメモリが不足している場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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