Memcache根据模式使条目无效?

时间:2009-07-29 18:31:47

标签: memcached clear invalidation

有没有办法根据通配符键使memcache中的条目无效?

所以,如果我有以下内存缓存密钥:

data/1
data/2
data/3

有没有办法可以使data/*这样的密钥无效?一举清除一堆陈旧数据将是非常有帮助的。

2 个答案:

答案 0 :(得分:23)

最好的方法是在创建memcache密钥时提供版本控制密钥。我们通过提供在我们的系统上创建密钥的单个函数/方法来实现此目的。

$var1 = 123;
$var2 = 456;
$cacheKey = makeKey('monkeyInfo', $var1, $var2, ...);

makeKey()使用cacheKeyVersions数组中的信息并返回:

5:monkeyInfo:123:456

注意开头的'5'。这来自keyNames =>的硬编码数组。版本。因此,如果我们想要使系统中的每个'monkeyInfo'缓存值无效,我们只需要在数组中将该数字更改为6。从那时起,同一个电话将寻找

6:monkeyInfo:123:456

以下是密钥版本阵列的外观示例。 “makeKey()”调用只是查看此数组以获取任何给定键的版本号。

$cacheKeyVersions = array(
    'monkeyInfo'   => 5,
    'zebraInfo'    => 2
);

你可以做各种各样的事情来使实现符合你的需要,但这是它的基本要点。

答案 1 :(得分:5)

memcached不支持命名空间删除。

official wiki建议如何解决这个问题: