【发布时间】:2017-12-06 12:57:35
【问题描述】:
我可以使用正则表达式一次性删除内存缓存中具有相似键名的多个键吗?
例如关键是:
key1
key2
key3
command [key.]
应该使用什么“命令”删除所有 key1、key2 和 key3?
【问题讨论】:
标签: memcached
我可以使用正则表达式一次性删除内存缓存中具有相似键名的多个键吗?
例如关键是:
key1
key2
key3
command [key.]
应该使用什么“命令”删除所有 key1、key2 和 key3?
【问题讨论】:
标签: memcached
Memcached 没有使用正则表达式删除键的选项。您可以删除每个键的缓存数据,或刷新整个缓存。
如果您有类似的密钥,您可以查看官方 wiki 以获取 Memcached namspacing。
例如而不是像这样保存 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)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,这会让您错过。因此,您已经清除了所有密钥的缓存。
【讨论】: