Назад | Перейти на главную страницу

Просмотр содержимого memcached

Есть ли какие-либо инструменты для исследования того, что в настоящее время кэшируется в пуле 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 а также есть 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 команда, например

memccat CACHE-KEY

Баш

Чтобы сбросить все ключи в оболочке Bash, попробуйте:

exec {memcache}<>/dev/tcp/localhost/11211; printf "stats items\nquit\n" >&${memcache}; cat <&${memcache}

netcat

Вот пример получения значения одного элемента с помощью netcat:

echo "get 13456_-cache-some_object" | nc 127.0.0.1 11211

Python

Видеть: Как экспортировать все ключи и значения из 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, однако добавили функциональные возможности, позволяющие выполнять запросы.