我只是想知道是否有一种方法可以使用通配符清除键值的内存缓存。
假设我有一个缓存,其键为“1234〜foo”,另一个为“1234〜foo〜bar”。
我有什么办法可以说使用clear(“1234 *”)之类的东西清除缓存并从上面清除它们吗?
我希望这是有道理的。
谢谢。
最佳答案
不,没有直接简单的方法可以做到这一点。 FAQ解决了这个问题,并提供了一种解决方法:
按命名空间删除
尽管memcached不支持任何类型的通配符删除或按 namespace 删除(因为没有 namespace ),但是可以使用一些技巧来模拟这种情况。但是,它们确实需要额外访问Memcached服务器。
在PHP中,示例使用名为foo的命名空间:
$ns_key = $memcache->get("foo_namespace_key");
// if not set, initialize it
if($ns_key===false) {
$ns_key=rand(1, 10000);
$memcache->set("foo_namespace_key", $ns_key);
}
// cleverly use the ns_key
$my_key = "foo_".$ns_key."_12345";
$my_val = $memcache->get($my_key);
//To clear the namespace do:
$memcache->increment("foo_namespace_key");
关于memcached - 内存缓存和通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1595904/