查看memcached的内容

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-toolperl 脚本,例如用法:

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

请参阅:如何使用 Python 从 memcached 导出所有键和值?

  • 这个答案帮助我找到了 _actual_ memcached 工具:**memcdump**。看到这个答案:http://stackoverflow.com/a/14491419/720360 (2认同)

dan*_*ree 8

尝试stats items- 即

echo "stats items" | nc 127.0.0.1 11211
Run Code Online (Sandbox Code Playgroud)

  • 这怎么回答这个问题?!这仅给出服务器统计信息,不检索任何密钥。 (18认同)

sil*_*iud 7

尝试使用telnet命令,例如:

$ telnet 0 11211
stats
stats items
set key 1 23 8
get key
Run Code Online (Sandbox Code Playgroud)


Tob*_*bia 7

安装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它似乎不起作用。