memcached インスタンス内には、2 つのタイプのデータ失効があります。1 つ目のタイプは、新しいキー/値ペアが memcached インスタンスに格納された時点で適用されます。適切なスラブ内に値を格納する十分な領域がない場合は、既存のもっとも長い間使われていない (LRU) オブジェクトがキャッシュから削除 (消去) され、新しい項目用の領域が確保されます。
LRU アルゴリズムにより、アクティブに使用されなくなったオブジェクトや、データが古いかほとんど無価値である可能性がある長期間使用されていないオブジェクトが削除されます。ただし、memcached に割り当てられたメモリーがキャッシュ内で定期的に使用される必須オブジェクトの数より小さいシステムでは、多くの項目がアクティブに使用されているにもかかわらず、失効してキャッシュから削除される可能性があります。消去 (失効するオブジェクト) のレベルをより適切に把握するには、統計メカニズムを使用します。詳細については、セクション16.6.4「memcached の統計の取得」を参照してください。
この消去動作を変更するには、memcached の起動時に -M
コマンド行オプションを設定します。このオプションを使用すると、メモリーが使い果たされたときに、古いデータが自動的に消去されず、エラーが返されるようになります。
2 つ目のタイプの失効システムは、キャッシュにキー/値ペアが挿入されたとき、またはキャッシュから項目を削除するときに設定できる明示的なメカニズムです。失効時間を使用することで、キャッシュ内のデータが最新であり、アプリケーションのニーズと要件に合っていることを効果的に確認できます。
失効時間を明示的に設定する一般的なシナリオとして、ユーザーが Web サイトにアクセスしたときのセッションデータのキャッシュなどが考えられます。memcached は、設定された明示的な失効時間をオブジェクトが要求された現在の時間と比較する遅延失効メカニズムを使用します。失効していないオブジェクトだけが返されます。
キャッシュからオブジェクトを明示的に削除するときに失効時間を設定することもできます。この場合、失効時間は実際にはタイムアウトであり、特定のキーの値を設定しようとして拒否される期間を示します。