获取在memcached中设置的所有密钥

我怎样才能获得在我的memcached实例中设置的所有键?

我尝试了谷歌search,但没有find多less,除了PHP支持getAllKeys方法 ,这意味着它实际上可以做到这一点。

那么,如何在telnet会话中获得相同的结果呢?

我已经尝试了memcached作弊表和Memcached telnet命令摘要中提到的所有与检索有关的选项,但是没有一个能够正常工作,我不知道如何find正确的方法来做到这一点。

PS:我目前正在开发中,所以可以假定由于设置了新键或者其他这样的竞赛情况,将不存在问题。

find了一个方法,感谢这里的链接 (与原来的谷歌小组讨论在这里 )

首先, Telnet到你的服务器:

 telnet 127.0.0.1 11211 

接下来,列出项目以获得平板ids:

统计项目
 STAT项目:3:数字1
 STAT项目:3:498岁
 STAT项目:22:数字1
 STAT项目:22:498岁
结束

“项目”之后的第一个数字是板块ID。 请求每个板块ID的caching转储,并限制要转储的最大密钥数量:

统计cachedump 3 100
 ITEM views.decorators.cache.cache_header..cc7d9 [6 b;  1256056128 s]
结束

统计信息cachedump 22 100
 ITEM views.decorators.cache.cache_page..8427e [7736 b;  1256056128 s]
结束

memdump

有一个memdump命令(Ubuntu中的memcdump ,是libmemcached-tools一部分),例如:

 memdump --servers=localhost 

这将返回所有的键或在Bash转储统计的所有项目,语法是:

 exec {memcache}<>/dev/tcp/localhost/11211; printf "stats items\nquit\n" >&${memcache}; cat <&${memcache} 

相关: 在纯粹的bash中编写Redis客户端 (这是Redis,但非常类似的方法)


memcached的工具

在最近的memcached版本中,还有memcached-tool命令,例如

 memcached-tool localhost:11211 dump | less 

它会转储所有的键和值。


巴什

要转储Bash shell中的所有键,请尝试:

 exec {memcache}<>/dev/tcp/localhost/11211; printf "stats items\nquit\n" >&${memcache}; cat <&${memcache} 

基于@mu无答案在这里。 我写了一个caching转储脚本。

脚本转储一个memcached服务器的所有内容。 它使用Ubuntu 12.04和localhost memcached进行testing,因此您的milage可能会有所不同。

 #!/usr/bin/env bash echo 'stats items' \ | nc localhost 11211 \ | grep -oe ':[0-9]*:' \ | grep -oe '[0-9]*' \ | sort \ | uniq \ | xargs -L1 -I{} bash -c 'echo "stats cachedump {} 1000" | nc localhost 11211' 

它做什么,它通过所有的caching板,并打印每个1000条目。

请注意这个脚本的某些限制,例如,它可能不能扩展到5GBcaching服务器。 但是在本地机器上进行debugging很有用。

最简单的方法是使用python-memcached-stats包, https://github.com/abstatic/python-memcached-stats

keys()方法应该让你去。

示例 –

 from memcached_stats import MemcachedStats mem = MemcachedStats() mem.keys() ['key-1', 'key-2', 'key-3', ... ] 

如果你安装了PHP&PHP-memcached,你可以运行

 $ php -r '$c = new Memcached(); $c->addServer("localhost", 11211); var_dump( $c->getAllKeys() );'