获取在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() );'