Есть ли какие-либо инструменты для исследования того, что в настоящее время кэшируется в пуле memcached? Не много графиков, но фактические пары "ключ-значение", хранящиеся в настоящее время.
Правильный ответ был бы 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
инструмент, например
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?
Пытаться stats items
- т.е.
echo "stats items" | nc 127.0.0.1 11211
Попробуйте использовать telnet
команда, например:
$ telnet 0 11211
stats
stats items
set key 1 23 8
get key
Установить 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, однако добавили функциональные возможности, позволяющие выполнять запросы.