キー値にワイルドカードを使用して memcache をクリアする方法があるかどうか知りたいだけです。
たとえば、キー「1234~foo」と別のキー「1234~foo~bar」を持つキャッシュがあるとします。
clear("1234*") のようなものを使用してキャッシュをクリアし、上記の両方をクリアする方法はありますか?
それが意味を成すといいのですが。
ありがとう。
ベストアンサー1
いいえ、これを直接簡単に行う方法はありません。よくある質問この問題に対処し、ある種の回避策を提供します。
名前空間による削除
memcached は、ワイルドカードによる削除や名前空間による削除をサポートしていませんが (名前空間がないため)、これをシミュレートするために使用できるトリックがいくつかあります。ただし、それらのトリックでは、memcached サーバーへの追加のトリップが必要になります。
PHP で foo という名前空間を使用する例:
$ns_key = $memcache->get("foo_namespace_key");
// if not set, initialize it
if($ns_key===false) {
$ns_key=rand(1, 10000);
$memcache->set("foo_namespace_key", $ns_key);
}
// cleverly use the ns_key
$my_key = "foo_".$ns_key."_12345";
$my_val = $memcache->get($my_key);
//To clear the namespace do:
$memcache->increment("foo_namespace_key");