ホームページ  >  記事  >  データベース  >  PHPでRedisを使用する際のメモリ不足の問題を解決する方法

PHPでRedisを使用する際のメモリ不足の問題を解決する方法

WBOY
WBOY転載
2023-06-01 16:37:121009ブラウズ

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

Redis が占有するメモリ サイズ

Redis はメモリベースのキーと値のデータベースであることがわかっています。システムのメモリ サイズには制限があるため、 Redis を使用しています Redis が使用できる最大メモリ サイズを構成できます。

#1. 設定ファイルによる設定#Redis インストール ディレクトリの redis.conf 設定ファイルに次の設定を追加してメモリ サイズを設定します

/ /Redis の最大メモリ サイズを 100M に設定します maxmemory 100mb

Redis 構成ファイルは、必ずしもインストール ディレクトリにある redis.conf ファイルを使用する必要はありません。Redis サービスを開始するときに、パラメーターを渡すことができます。

2. コマンドによる変更

Redis は実行時のコマンドによるメモリ サイズの動的変更をサポートします

//Set Redis が占有する最大メモリ サイズを 100M にします 127.0.0.1:6379> config set maxmemory 100mb //Redis が使用できる最大メモリ サイズを取得します 127.0.0.1:6379> config get maxmemory

If 最大メモリ サイズが設定されていないか、最大メモリ サイズが 0 に設定されている場合、64 ビット オペレーティング システムではメモリ サイズに制限はなく、32 ビット オペレーティング システムでは最大 3GB のメモリを使用できます

Redis メモリの削減

Redis の最大占有量をメモリ サイズに設定できるようになったので、設定されたメモリは使い果たされます。では、メモリが足りなくなったときに、Redis にデータを追加し続けると、使用できるメモリがなくなってしまうことはないでしょうか?実際、Redis は、この状況に対処するためのいくつかの戦略を定義しています。

noeviction (デフォルトの戦略)

: 書き込みリクエストに対するサービスを提供しなくなり、直接エラーを返します (DEL リクエストと一部の特別なリクエストを除く) allkeys -lru: LRU アルゴリズムを使用してすべてのキーから削除します volatile-lru: LRU アルゴリズムを使用して有効期限が設定されたキーから削除します allkeys-random: ランダムからすべてのキーのデータを削除します volatile-random: 有効期限が設定されたキーからデータをランダムに削除します volatile-ttl: キーの有効期限に応じて、有効期限が設定されたキーで戦略を作成するときに、キーを削除できない場合は、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 アルゴリズム

#LRU とは何ですか?

#上記の通り、Redis で使用可能な最大メモリが使い果たされた場合、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 開発環境を構築するためのツールは何ですか?

1. phpStudy は、初心者が始めるのに最も一般的に使用される開発環境です。

2. WampServer、WampServer も phpStudy と同じくらい操作が簡単で、初心者にとってよりフレンドリーです。

3. XAMPP、XAMPP (Apache MySQL PHP PERL) は強力な統合ウェブサイト構築ソフトウェア パッケージです;

4. MAMP、MAMP は、MAMP と MAMP Pro for Mac の 2 つのタイプに分かれています。

5. PagodaPanel、PagodaPanelは、WindowsおよびLinuxシステムをサポートするサーバー管理ソフトウェアです。

6. UPUPW、UPUPW は現在、Windows プラットフォームで最も特徴的な Web サーバー PHP スイートです。

以上がPHPでRedisを使用する際のメモリ不足の問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。