Take the 2-minute tour ×
Webmasters Stack Exchange is a question and answer site for pro webmasters. It's 100% free, no registration required.

I recently made a change to my User class (which is memcached); is there any way I can invalidate all entries whose key begins with User without invalidating the entire cache?

If not are there any workarounds? I would rather not delete everything.

share|improve this question
    
You'll probably get a faster response over at serverfault.com –  Mark Henderson Jul 8 '10 at 23:41
add comment

1 Answer

up vote 1 down vote accepted

In the memcached FAQ, 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) $memcache->set("foo_namespace_key", rand(1, 10000));
// 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");

If you are planning on doing a blanket clear of only part of the cache, you might consider setting the expiry to a shorter time period.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.