memcached が新しいデータをメモリに保存する必要があり、メモリがすでにいっぱいになっている場合、次のようになります。
- memcached は適切な*期限切れのエントリを検索し、見つかった場合はそのエントリのデータを置き換えます。ポイント 3) データはすぐには削除されませんが、新しいデータを設定する必要がある場合は、スペースが再割り当てされます。
- 期限切れのエントリが見つからない場合は、最近使用されていないエントリが置き換えられます
*memcached がメモリを処理する方法に注意してください。さまざまなサイズのブロックが割り当てられるため、キャッシュに設定するデータのサイズが、削除するエントリを決定する役割を果たします。エントリは、2K、4K、8K、16K... など、最大 1M のサイズです。
この情報はすべてドキュメントに記載されているので、注意深く読んでください。@deceze が言うように、memcached はデータがメモリ内で利用できることを保証するものではなく、キャッシュ ミスの嵐に備える必要があります。ミス ストームを回避するための興味深いアプローチの 1 つは、有効期限をランダムなオフセット (たとえば 10 + [0..10] 分) で設定することです。すべてのアイテムが同時に期限切れになるわけではありません)。
また、キャッシュに何かを保存したい場合は、次の 2 つのことを行う必要があります。
- キャッシュにデータのロードを要求するウォームアップ スクリプト。だからいつも最近使ってる
- アイテムの 2 つの有効期限: 1 つの実際の有効期限、たとえば 30 分です。別 - アイテムと共にキャッシュされます - 論理的な有効期限、たとえば 10 分です。キャッシュからデータを取得するときに、論理的な有効期限を確認し、有効期限が切れている場合は、データを再読み込みしてキャッシュにさらに 30 分間設定します。このようにして、実際のキャッシュの有効期限に達することはなく、データは定期的に更新されます。
5) 「memcached.conf」の -k オプションの意味は何ですか。「すべてのページメモリをロックダウンする」の意味がわかりません。またREADMEの記載も不十分です。
memcached に割り当てるメモリの量に関係なく、必要な量だけを使用します。たとえば、実際に使用されるメモリのみを割り当てます。ただし、-k
オプションを使用すると、memcached の開始時にメモリ全体が予約されるため、必要かどうかに関係なく、常にメモリ全体が割り当てられます。