Ответы:
Правильный ответ будет 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 .
В последней версии memcached
также есть memcached-tool
скрипт на Perl, например:
memcached-tool localhost:11211 dump | less
который сбрасывает все ключи и значения.
Чтобы вывести список ключей с сервера, используйте memcdump
/ memdump
tool, например
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, попробуйте:
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
Смотрите: Как экспортировать все ключи и значения из memcached с Python?
apt install libmemcached-tools
, но тогда это все еще не было на моем пути, так что /usr/share/memcached/scripts/memcached-tool localhost:11211 dump
. Ubuntu 18.
Установите 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
что, похоже, не работает.
В базовом memcached я не думаю, что есть какой-либо способ запроса ключей, хранящихся на сервере. Единственная мысль, которую вы можете получить, - это статистика, связанная с хранением и хранящимися предметами.
Некоторые поставщики, которые разработали совместимые с memcached решения, например Gear6 , однако добавили функциональность, позволяющую выполнять запросы.