使用通配符清除 apcu

Clearing apcu with a wild card

是否可以使用通配符清除 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 缓存一起使用 类

我相信你应该按照描述的那样尝试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) ); 

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/'));