是否可以使用通配符清除apcu缓存?
例如,我可能有一堆缓存键:
products_fooandbars product_1_foo
users_fooandbars user_1_foo user_1_bar
user_2_foo user_2_bar
有没有办法清除用户1喜欢的所有内容 user_1_ *或清除所有用户,例如此用户_ *
我正在使用Symfony和doctrine apc缓存类
答案 0 :(得分:3)
我相信你应该按照http://php.net/manual/en/function.apc-delete.php#101794
的描述进行尝试// delete all keys beginning with a regex match on MY_APC_TESTA
$toDelete = new APCIterator('user', '/^MY_KEY/', APC_ITER_VALUE);
var_dump( apc_delete($toDelete) );
答案 1 :(得分:1)
OP指的是APCu而不是 APC 功能名称等方面没有太大区别,但是对于任何人来说,明确 APC 是旧版本, APCu 是最好的新的,实现更好。
旧的APC实现了操作码缓存和用户对象缓存。 APCu仅实现用户对象缓存。对于操作码缓存,您可以使用其他东西,例如Zend OPcache。 也就是说,这是来自@Evgenly的更新版本:
// delete all keys beginning with a regex match
foreach(new APCUIterator('/^MY_KEY/') as $apcu_cache){
echo 'key: ' . $apcu_cache['key'] . PHP_EOL;
echo 'val: ' . $apcu_cache['value'];
apcu_delete($apcu_cache['key']);
}
foreach是说明性的,您也可以这样做:
apcu_delete(new APCUIterator('/^MY_KEY/'));