ワイルドカード キーに従って memcache のエントリを無効にする方法はありますか?
したがって、次の memcache キーがある場合:
data/1
data/2
data/3
これらのキーを無効にする方法はありますdata/*
か? 大量の古いデータを一挙に消去できれば非常に便利です。
ワイルドカード キーに従って memcache のエントリを無効にする方法はありますか?
したがって、次の memcache キーがある場合:
data/1
data/2
data/3
これらのキーを無効にする方法はありますdata/*
か? 大量の古いデータを一挙に消去できれば非常に便利です。
最良の方法は、memcache キーを作成するときにバージョニング キーを提供することです。これは、システムでキーを作成するための単一の関数/メソッドを提供することで実現します。
$var1 = 123;
$var2 = 456;
$cacheKey = makeKey('monkeyInfo', $var1, $var2, ...);
makeKey()
cacheKeyVersions 配列の情報を使用して、以下を返します。
5:monkeyInfo:123:456
先頭の「5」に注目してください。これは、ハードコーディングされた keyNames => バージョンの配列から取得されます。したがって、システム内のすべての「monkeyInfo」キャッシュ値を無効にしたい場合は、配列内のその数値を 6 に変更するだけです。それ以降、同じ呼び出しで
6:monkeyInfo:123:456
鍵バージョン配列がどのように見えるかの例を次に示します。' makeKey()
' 呼び出しは、単にこの配列を調べて、特定のキーのバージョン番号を取得します。
$cacheKeyVersions = array(
'monkeyInfo' => 5,
'zebraInfo' => 2
);
実装をニーズに合わせるためにあらゆる種類のことを行うことができますが、それが基本的な要点です。
memcached は名前空間による削除をサポートしていません。
公式 wikiには、それを回避する方法に関する提案があります。