使用Memcache中的正则表达式删除密钥

sha*_*ow3 6 memcached

我可以使用正则表达式一次删除多个具有相似密钥名称的密钥吗?

例如键是:

key1
key2
key3

command [key.]
Run Code Online (Sandbox Code Playgroud)

使用哪个“命令”应该删除key1key2key3的全部

Igo*_*gor 6

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

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

例如,不要像这样将您在Memcached中的密钥保存在其中:

key1
key2
key3
Run Code Online (Sandbox Code Playgroud)

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

key:<namespace_value>:1
key:<namespace_value>:2
key:<namespace_value>:3
Run Code Online (Sandbox Code Playgroud)

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

<key>            <value>
namespace:key       1234
key:1234:1        value1
key:1234:2        value2
key:1234:3        value3
Run Code Online (Sandbox Code Playgroud)

现在,在访问密钥之前,您将首先获取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
Run Code Online (Sandbox Code Playgroud)

使用新名称空间值对key1进行的下一次提取将搜索key:1235:1,这将使您错过机会。因此,您已收回所有密钥的缓存。