Ron*_*ero 4 php memcached eaccelerator apc
假设我将这些变量保存在apc,memcached和eaccelerator中:
article_1_0
article_1_1
article_3_2
article_3_3
article_2_4
如何删除所有以article_3_
(最多可达10000)的缓存变量?
有没有办法列出缓存变量?
Arn*_*anc 11
对于APC:
$iterator = new APCIterator('user', '#^article_3_#', APC_ITER_KEY);
foreach($iterator as $entry_name) {
apc_delete($entry_name);
}
Run Code Online (Sandbox Code Playgroud)
对于eaccelerator:
foreach(eaccelerator_list_keys() as $name => $infos) {
if (preg_match('#^article_3_#', $name)) {
eaccelerator_rm($name);
}
}
Run Code Online (Sandbox Code Playgroud)
对于memcached,请查看@ rik的答案
一次过期多个密钥的一般解决方案是命名它们.要使它们过期,您只需更改命名空间:
假设您有一组键"article_3_1","article_3_2",....您可以像这样存储它们:
$ns = apc_fetch('article_3_namespace');
apc_store($ns."_article_3_1", $value);
apc_store($ns."_article_3_2", $value);
Run Code Online (Sandbox Code Playgroud)
像这样获取它们:
$ns = apc_fetch('article_3_namespace');
apc_fetch($ns."_article_3_1");
Run Code Online (Sandbox Code Playgroud)
只需递增命名空间即可使它们全部到期:
apc_inc('article_3_namespace');
Run Code Online (Sandbox Code Playgroud)