查看memcached的内容


36

是否有任何工具可以探索内存缓存池中当前缓存的内容?不是很多图,而是当前存储的实际键/值。

Answers:


9

试试stats items-即

echo "stats items" | nc 127.0.0.1 11211

16
这如何回答这个问题?这仅给出服务器统计信息,不检索任何密钥。
Jagtesh Chadha 2012年

24

正确的答案是 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 stats cachedump命令》


cachedump限于未记录的数据量,不能超过1-2mb,因此不可靠
John

11

记忆快取工具

在最近的版本中memcached还有memcached-toolperl脚本,例如使用:

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从memcached导出所有键和值?


2
这个答案帮助我找到了实际的 memcached工具:memcdump。看到这个答案:stackoverflow.com/a/14491419/720360
mmuller

1
我首先必须这样做apt install libmemcached-tools,但是后来仍然不在路上/usr/share/memcached/scripts/memcached-tool localhost:11211 dump。Ubuntu 18.
Camille Goudeseune

7

尝试使用telnet命令,例如:

$ telnet 0 11211
stats
stats items
set key 1 23 8
get key

6

安装libmemcached-tools,然后可以使用以下命令获取所有密钥:

memcdump --server=127.0.0.1

要查看内容,您可以要求一个特定的密钥:

memccat --server=127.0.0.1 SOME_KEY

或者您可以遍历Bash中的键列表:

for key in $(memcdump --server=127.0.0.1); do echo ------ $key ------; memccat --server=127.0.0.1 $key; done

确保使用127.0.0.1(如果您正在同一主机上运行命令),因为localhost它似乎无法正常工作。


2

在基本的memcached中,我认为没有任何查询存储在服务器中的密钥的方法。唯一可以得到的就是与存储和存储项目有关的统计信息。

但是,一些已经开发了与内存缓存兼容的解决方案的供应商,例如Gear6,已经添加了允许查询的功能。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.