是否有任何工具可以探索 memcached 池中当前缓存的内容?不是很多图表,而是当前存储的实际键/值。
答案1
尝试stats items
- 即
echo "stats items" | nc 127.0.0.1 11211
答案2
正确答案是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
笔记:这是一个未记录的命令,不受 memcached 团队支持,可以在任何版本中删除。有关完整参考,请查看了解 Memcached stats cachedump 命令。
答案3
memcached 工具
在最新版本中memcached
还有memcached-tool
perl 脚本,例如用法:
memcached-tool localhost:11211 dump | less
转储所有键和值。
内存转储
要从服务器转储密钥列表,请使用memcdump
/memdump
工具,例如
memcdump --servers=localhost
转储所有对象:
memcdump --servers=localhost | xargs -L1 -I% sh -c 'echo "get %" | nc localhost 11211'
要将所有键值转储到单独的文件中:
while read -r key; do [ -f "$key" ] || echo "get $key" | nc localhost 11211 > "$key.dump"; done < <(memcdump --server localhost)
记忆猫
要打印键值,可以使用memccat
命令,例如
memccat CACHE-KEY
猛击
要转储 Bash shell 中的所有键,请尝试:
exec {memcache}<>/dev/tcp/localhost/11211; printf "stats items\nquit\n" >&${memcache}; cat <&${memcache}
网猫
以下是使用以下方法获取单个项目值的示例netcat
:
echo "get 13456_-cache-some_object" | nc 127.0.0.1 11211
Python
答案4
安装libmemcached-tools
然后您可以使用此命令获取所有密钥:
memcdump --server=127.0.0.1
要查看内容,您可以请求特定的密钥:
memcat --server=127.0.0.1 SOME_KEY
或者你可以循环遍历 Bash 中的键列表:
for key in $(memcdump --server=127.0.0.1); do echo ------ $key ------; memcat --server=127.0.0.1 $key; done
确保使用 127.0.0.1(如果您在同一主机上运行该命令),因为localhost
它似乎不起作用。