memcached - 内存缓存和通配符

标签 memcached

我只是想知道是否有一种方法可以使用通配符清除键值的内存缓存。

假设我有一个缓存,其键为“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/

相关文章:

ASP.NET - 多个 Web 应用程序 - 共享缓存对象

python - Django Memcached 缓存消失

php - 通过 FTP 和 Memcache 的 XML 突然减慢了我的 PHP 网站速度......从今天开始

php - 多个(取消的)POST 请求后 session 丢失

mysql - 同步内存缓存和 MySQL

php - "Automatic cleaning is not available/necessary with this backend"是什么意思? (对于内存缓存)

mysql - 如何通过后端通过过滤器获取计数

php - Memcache::set() 断管

Memcached 的 UDP 基准测试

python - Django Memcache session 异常行为