在内存缓存中使用正则表达式删除键

Delete keys using regex in memcache

我可以使用正则表达式一次性删除 memcache 中具有相似键名的多个键吗?

例如键是:

key1
key2
key3

command [key.]

使用什么 "command" 应删除所有 key1key2key3?

Memcached 没有使用正则表达式删除键的选项。您可以删除每个键的缓存数据,或刷新整个缓存。

如果您有类似的密钥,您可以查看 Memcached namspacing 的官方 wiki。

例如而不是像这样将您的密钥保存在 Memcached 中:

key1
key2
key3

您可以在命名空间中组织键,它们现在看起来像这样:

key:<namespace_value>:1
key:<namespace_value>:2
key:<namespace_value>:3

其中 namespace_value 是一些随机整数,您也可以将其保存在 Memcached 中,每个缓存区域(前缀为 "key" ) 例如,如果您的缓存数据如下所示:

<key>            <value>
namespace:key       1234
key:1234:1        value1
key:1234:2        value2
key:1234:3        value3

现在,在您访问您的密钥之前,您将首先获取 namespace_value,并将其附加到您的密钥。

  • 获取 namespace:key 的值(结果为 1234
  • 获取命名空间中 key1 的值;您的实际查找键将是 key:<namespace_value>:1 => key:1234:1

现在驱逐前缀为 "key" 的所有键,增加 namespace_value 就足够了,然后保存它回到你的缓存中。现在您的命名空间值将是 1235,缓存数据将是:

<key>            <value>
namespace:key      1235
key:1234:1        value1
key:1234:2        value2
key:1234:3        value3

使用新的命名空间值对 key1 的下一次提取将搜索 key:1235:1,并且会让您错过.因此,您已驱逐所有密钥的缓存。