Memcache根据模式使条目无效?

Kek*_*koa 17 memcached clear invalidation

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

所以,如果我有以下memcache键:

data/1
data/2
data/3
Run Code Online (Sandbox Code Playgroud)

有没有办法让这些键无效data/*?一举清除一堆陈旧数据将是非常有帮助的.

con*_*awg 23

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

$var1 = 123;
$var2 = 456;
$cacheKey = makeKey('monkeyInfo', $var1, $var2, ...);
Run Code Online (Sandbox Code Playgroud)

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

5:monkeyInfo:123:456
Run Code Online (Sandbox Code Playgroud)

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

6:monkeyInfo:123:456
Run Code Online (Sandbox Code Playgroud)

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

$cacheKeyVersions = array(
    'monkeyInfo'   => 5,
    'zebraInfo'    => 2
);
Run Code Online (Sandbox Code Playgroud)

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

  • 你在哪里存储版本号? (2认同)

Gav*_*Roy 5

memcached不支持命名空间删除.

官方的wiki对如何解决这一个建议: