有没有办法根据通配符键使内存缓存中的条目无效?
因此,如果我有以下内存缓存键:
data/1
data/2
data/3
有没有一种方法可以使这些密钥无效data/*
?一口气清除一堆陈旧的数据将非常有帮助。
有没有办法根据通配符键使内存缓存中的条目无效?
因此,如果我有以下内存缓存键:
data/1
data/2
data/3
有没有一种方法可以使这些密钥无效data/*
?一口气清除一堆陈旧的数据将非常有帮助。
最好的方法是在创建 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
);
你可以做各种各样的事情来使实现符合你的需要,但这是它的基本要点。
memcached 不支持命名空间删除。
官方 wiki有一个关于如何解决它的建议: