I'm just wondering if there is a way to clear memcache using wildcards for key values.
So say I have a cache with the key "1234~foo" and another "1234~foo~bar".
Is there any way I can say clear the cache by using something like clear("1234*") and have it clear both from above?
I hope that makes sense.
Thanks.
No, there isn't a direct easy way to do this. The FAQ addresses this, and provides a kind of workaround:
Deleting by Namespace
While memcached does not support any type of wildcard deleting or deletion by namespace (since there are not namespaces), there are some tricks that can be used to simulate this. They do require extra trips to the memcached servers however.
Example, in PHP, for using a namespace called 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");