gpt4 book ai didi

php - 在 apc/memcache/eaccelerator 中按前缀删除缓存

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:55:25 27 4
gpt4 key购买 nike

假设我将这些变量保存在 apc、memcached 和 eaccelerator 中:

  • article_1_0
  • article_1_1
  • article_3_2
  • article_3_3
  • article_2_4

如何删除所有以 article_3_ 开头的缓存变量(最多可达 10000 个)?

有没有办法列出缓存的变量?

最佳答案

缓慢的解决方案

对于 APC:

$iterator = new APCIterator('user', '#^article_3_#', APC_ITER_KEY);
foreach($iterator as $entry_name) {
apc_delete($entry_name);
}

对于加速器:

foreach(eaccelerator_list_keys() as $name => $infos) {
if (preg_match('#^article_3_#', $name)) {
eaccelerator_rm($name);
}
}

对于 memcached,请查看 @rik's answer

正确的解决方案

一次使多个 key 过期的一般解决方案是为它们命名空间。要使它们过期,您只需更改命名空间:

假设您有一组键“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);

像这样获取它们:

$ns = apc_fetch('article_3_namespace');
apc_fetch($ns."_article_3_1");

只需增加命名空间就可以使它们全部过期:

apc_inc('article_3_namespace');

关于php - 在 apc/memcache/eaccelerator 中按前缀删除缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4785153/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com