是否可以通过前缀获取/搜索Memcached密钥?

我正在写memcached很多键/值 - > PREFIX_KEY1,PREFIX_KEY2,PREFIX_KEY3 我需要获取所有以PREFIX_开头的键 可能吗?     
已邀请:
对不起,不行。 Memcached使用散列算法,在明显随机的位置分配密钥,因此这些密钥遍布各处。你必须扫描一切才能找到它们。 此外,您应该知道,通过设计,memcached可以随时以任何理由删除任何密钥。如果你把东西放进去,你应该知道你不能依赖它回来。这对于它的原始用例来说是绝对正常的,缓存可以减少数据库上的命中。但如果你想做一些更复杂的事情,这可能是一个严重的问题。 如果这些限制是一个问题,我建议您使用Redis。它的行为与memcached非常相似,只不过它会保留数据并允许您存储复杂的数据结构。因此,对于您的用例,您可以在Redis中存储哈希值,然后将整个哈希值拉出来。     
虽然@btilly说memcached本身不这样做是正确的,但你可以通过维护共享你的前缀的键索引来模拟它(非常有效),然后你可以获取匹配某个前缀的所有条目。 显然,这只适用于您提前选择的特定键而不是任意数据,但如果您能够忍受这种限制,那么它非常有用。一个memcache开发人员有一篇关于这个主题的好文章。     
搜索特定键是否存在的快速命令(键名可以是“grep regex”)
for i in {1..40}; do (echo "stats cachedump $i 0"; sleep 1; echo "quit";) | telnet localhost 11211 | grep 'APREFIX*|ANOTHERPREFIX*'; done
我是平板数 在上面的例子中,我们搜索从1到40的板 不要错过grep部分'APREFIX * | ANOTHERPREFIX *';) 基于https://groups.google.com/forum/#!topic/memcached/YyzonP9HUi0上的讨论     
您可以使用命名空间并执行所需的操作。这是一个执行相同操作的PHP库。您可以为多个应用程序使用相同的Memcached。 https://github.com/vijayabose/n_memcached     

要回复问题请先登录注册