在内存缓存中使用正则表达式删除键
Delete keys using regex in memcache
我可以使用正则表达式一次性删除 memcache 中具有相似键名的多个键吗?
例如键是:
key1
key2
key3
command [key.]
使用什么 "command" 应删除所有 key1、key2 和 key3?
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,并且会让您错过.因此,您已驱逐所有密钥的缓存。
我可以使用正则表达式一次性删除 memcache 中具有相似键名的多个键吗?
例如键是:
key1
key2
key3
command [key.]
使用什么 "command" 应删除所有 key1、key2 和 key3?
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,并且会让您错过.因此,您已驱逐所有密钥的缓存。