17

ワイルドカード キーに従って memcache のエントリを無効にする方法はありますか?

したがって、次の memcache キーがある場合:

data/1
data/2
data/3

これらのキーを無効にする方法はありますdata/*か? 大量の古いデータを一挙に消去できれば非常に便利です。

4

2 に答える 2

23

最良の方法は、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
);

実装をニーズに合わせるためにあらゆる種類のことを行うことができますが、それが基本的な要点です。

于 2009-08-01T18:39:54.407 に答える
5

memcached は名前空間による削除をサポートしていません。

公式 wikiには、それを回避する方法に関する提案があります。

于 2009-07-30T00:33:55.310 に答える