ホームページ > バックエンド開発 > PHPチュートリアル > memcache 内の使用頻度の低いデータを定期的に削除する方法

memcache 内の使用頻度の低いデータを定期的に削除する方法

WBOY
リリース: 2016-06-13 13:26:38
オリジナル
864 人が閲覧しました

memcache 内の使用頻度の低いデータを定期的に削除する方法
タイトルにも記載しましたが、memcache 内のデータが無制限に増大するのを防ぐ方法と、長期間使用されていないデータや使用頻度が低いデータを定期的に削除する方法について説明します。 。オンラインで待っています!

-----解決策--------------------------------
memcache をセッションのようにしたり、Cookie のように有効期限を設定したりできることは知っていました
------解決策------
能力がある場合は、ルールをカスタマイズしてください。 memcache の実装を変更できる
------解決策------
memcache は各スラブのメモリ プールに基づいています。 LRU リンク リストを維持し、各 NODE にはライフ サイクルがあり、すべてのキャッシュ ノードがハッシュ テーブルを形成します。

memcache は遅延削除メカニズムを採用しており、そのメモリ要求ステップはおおよそ次の要求チェーンです: ノードのサイズに従ってスラブを見つけます ---> スラブの LRU 末尾から前方を探します。期限切れで、reference==1 NODE が見つかった場合、この NODE をハッシュ テーブルと LRU からリンク解除し、この NODE を LRU の先頭に挿入して参照を 1 に設定し、入力をノードの末尾に保存して再挿入します。見つからない場合は、NODE を格納するためにスラブに直接適用されます。これはメモリ プールの機能です。アプリケーションが失敗した場合、次の戦略は LRU を再スキャンして見つけることです。有効期限が切れていないが、reference==1 を持つノードを直接リサイクルする。これは最後の手段です。この戦略が失敗した場合、寿命が切れたノードを強制的にリサイクルするという方法が考えられます。 3 日で、現在の参照は != 1 です。これは小さなバグだったというコメントを覚えていますが、この方法で処理しても問題ありません。おそらく、このノードはどこにも参照されていないため、どこかで参照していることを意味します。 get/remove はペアになっていて、memcache のさまざまな関数に表示されるため、最初はこのバグがどこで発生したのかわかりません。

それで、理解できましたか? それは、できるだけ多くのメモリを割り当てるということです。外挿すると、プログラムの先頭に大量の malloc メモリが割り当てられます。メモリ プールであり、スラブによって管理されます。メモリの再利用は、定期的にスキャンするスレッドではなく、必要なときに検出する方法です。
------解決策---------

話し合う
Memcache はスラブ メモリ プールに基づいており、各スラブには LRU リンク リストがあり、すべてのキャッシュ ノードがハッシュ テーブルを形成します。

memcache は遅延削除メカニズムを採用しており、そのメモリ要求ステップはおおよそ次の要求チェーンです: ノードのサイズに従ってスラブを見つけます ---> スラブの LRU 末尾から前方を探します。期限切れで、reference==1 NODE が見つかった場合は、これをハッシュ テーブルと LRU からリンク解除します...

------解決策---------
LS が詳しく説明しています...

一言でまとめると....
memcached の起動時に -m パラメータを使用して、memcached が占有できるメモリの最大量を設定するだけで済み、残りは memcached が処理します。 、ほとんど役に立たないデータは自動的に破棄されますので、心配する必要はありません。
------解決策---------
定期的なフラッシュ
------解決策-------
Java には memcache のフラッシュ メソッドがあることを思い出してください。php にはあるはずです。
通常のことと同様に、Linux では、php ファイルにフラッシュを記述して、
*/10 */23 * * * wget -q --spider http ://www などの crontab スケジュールされたリクエストを作成できます。 .xxxx.com/statbyday/stat1.php > /dev/null 2>&1
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート