2010-05-27 37 views
2

我只是想删除缓存的数据,但我有很多键,例如:如何用“过滤器”键删除memcached数据?

user_54_books 
user_54_movies 
user_54_comments 
user_54_foobar 

我可以写$cache->delete('user_54_books');但我与所有“user_ID_objects”做到这一点,我可以说内存缓存,像delete->('user_54_*');?怎么样?谢谢:)

回答

2

不,但请参阅“Deleting By Namespace” in the FAQ解决方法。

基本上,您使用“版本密钥”。要删除所有旧数据,只需增加版本密钥。因此旧数据将不再被读取,并且在需要空间时将旧的并且被覆盖。

1

试试这个策略:

 
$userIdList = array(1, 2, 3, 4, 5); 
$userIdObjectList = array("boots", "movies", "comments", "foobar"); 
foreach ($userIdList as $id) 
{ 
    foreach ($userIdObjectList as $object) 
    { 
    $cache->delete(sprintf("user_%s_%s", $id, $object)); 
    } 
}