在memcache中使用正则表达式删除键

时间:2017-12-06 12:57:36

标签: memcached

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

e.g。键是:

key1
key2
key3

command [key.]

使用什么“命令”应该删除所有 key1 key2 key3

1 个答案:

答案 0 :(得分:3)

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

如果你有类似的密钥,你可以查看Memcached namspacing的官方维基。

e.g。而不是像以下那样保存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 ,并将其附加到您的密钥。

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

现在要逐出所有带有“key”前缀的键,只需增加 namespace_value ,然后将其保存回缓存中即可。现在,您的命名空间值将为 1235 ,缓存数据将为:

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

使用新的命名空间值下次获取 key1 将搜索键:1235:1 ,并会给您一个未命中。因此,您已逐出所有密钥的缓存。