Tom*_*Tom 42 monitoring logging memcached
是否有任何工具可以探索当前缓存在 memcached 池中的内容?不是很多图表,而是当前存储的实际键/值。
Jag*_*dha 23
正确答案是 echo "stats cachedump SLABS_ID LIMIT" | nc HOSTNAME PORT
例如。 echo "stats cachedump 15 4" | nc 127.0.0.1 11211
这将给出以下行的输出:
ITEM cache_path-comments%2Fpage%2F2 [2211 b; 1337195558 s]
ITEM cache_path-comments%2Fpage%2F5 [2205 b; 1337195558 s]
ITEM cache_path-comments%2Fpage%2F6 [2179 b; 1337195558 s]
ITEM cache_path-comments [2164 b; 1337195558 s]
END
Run Code Online (Sandbox Code Playgroud)
注意:这是一个未记录的命令,memcached 团队不支持,可以在任何版本中删除。如需完整参考,请查看了解 Memcached stats cachedump 命令。
ken*_*orb 15
在最新版本中memcached
还有memcached-tool
perl 脚本,例如用法:
memcached-tool localhost:11211 dump | less
Run Code Online (Sandbox Code Playgroud)
转储所有键和值。
要从服务器转储密钥列表,请使用memcdump
/memdump
工具,例如
memcdump --servers=localhost
Run Code Online (Sandbox Code Playgroud)
转储所有对象:
memcdump --servers=localhost | xargs -L1 -I% sh -c 'echo "get %" | nc localhost 11211'
Run Code Online (Sandbox Code Playgroud)
将所有键值转储到单独的文件中:
while read -r key; do [ -f "$key" ] || echo "get $key" | nc localhost 11211 > "$key.dump"; done < <(memcdump --server localhost)
Run Code Online (Sandbox Code Playgroud)
要打印键值,您可以使用memccat
命令,例如
memccat CACHE-KEY
Run Code Online (Sandbox Code Playgroud)
要在 Bash shell 中转储所有密钥,请尝试:
exec {memcache}<>/dev/tcp/localhost/11211; printf "stats items\nquit\n" >&${memcache}; cat <&${memcache}
Run Code Online (Sandbox Code Playgroud)
这是使用以下方法获取单个项目值的示例netcat
:
echo "get 13456_-cache-some_object" | nc 127.0.0.1 11211
Run Code Online (Sandbox Code Playgroud)
请参阅:如何使用 Python 从 memcached 导出所有键和值?
尝试stats items
- 即
echo "stats items" | nc 127.0.0.1 11211
Run Code Online (Sandbox Code Playgroud)
尝试使用telnet
命令,例如:
$ telnet 0 11211
stats
stats items
set key 1 23 8
get key
Run Code Online (Sandbox Code Playgroud)
安装libmemcached-tools
,然后您可以使用此命令获取所有密钥:
memcdump --server=127.0.0.1
Run Code Online (Sandbox Code Playgroud)
要查看内容,您可以要求输入特定密钥:
memccat --server=127.0.0.1 SOME_KEY
Run Code Online (Sandbox Code Playgroud)
或者您可以遍历 Bash 中的键列表:
for key in $(memcdump --server=127.0.0.1); do echo ------ $key ------; memccat --server=127.0.0.1 $key; done
Run Code Online (Sandbox Code Playgroud)
确保使用 127.0.0.1(如果您在同一主机上运行该命令),因为localhost
它似乎不起作用。