Как я могу получить все ключи, установленные в моем экземпляре (ах) memcached?
Я пробовал поискать в Google, но ничего не нашел, кроме того, что PHP
поддерживает getAllKeys
метод , а это значит, что это действительно можно как-то сделать. Как я могу получить то же самое в сеансе Telnet?
Я опробовал все параметры, связанные с извлечением, упомянутые в памятке по memcached и сводке команд Telnet в Memcached , но ни один из них не работает, и я не могу найти правильный способ сделать это.
Примечание. В настоящее время я занимаюсь этим в стадии разработки, поэтому можно предположить, что не возникнет проблем из-за установки новых ключей или возникновения других подобных состояний гонки, а количество ключей также будет ограничено.
Ответы:
Нашел способ, благодаря ссылке здесь (с оригинальным обсуждением группы google здесь )
Сначала
Telnet
на ваш сервер:Затем перечислите элементы, чтобы получить идентификаторы плит:
Первое число после «items» - это идентификатор плиты. Запросить дамп кеша для каждого идентификатора плиты с ограничением максимального количества ключей для дампа:
источник
b
это байты,s
это секунды времени эпохиlru_crawler metadump all
то, что сбрасывает все ключи кеша, а не "только" первые 1M .. github.com/memcached/memcached/blob/…memdump
Для этого (части ) есть
memcdump
(иногдаmemdump
) командаlibmemcached-tools
, например:который вернет все ключи.
memcached-tool
В последней версии
memcached
также естьmemcached-tool
команда, напримеркоторый сбрасывает все ключи и значения.
Смотрите также:
источник
dump
Суб-команда дляmemcached-tool
похоже , чтобы очистить кэш :( --might безопаснее использоватьdisplay
илиstats
первый.libmemcached-tools
, а вместо этого двоичный файл инструмента называется memcdump.memcached-tool
это несколько скрыто в каталоге, который может не входить в стандартPATH
- по крайней мере, в Ubuntu Xenial - здесь:/usr/share/memcached/scripts/
На основе @mu 無 ответьте здесь. Я написал сценарий дампа кеша.
Скрипт выгружает все содержимое сервера memcached. Он протестирован с Ubuntu 12.04 и memcached localhost, поэтому ваш пробег может отличаться.
Что он делает, он просматривает все блоки кеша и распечатывает 1000 записей каждого.
Обратите внимание на определенные ограничения этого сценария, например, он может не масштабироваться для кэш-сервера 5 ГБ. Но это полезно для отладки на локальном компьютере.
источник
memcached 1.4.21-1.1+deb8u1
мне приходилось явно отправлять команду выхода в memcached. Я изменил вашу команду на это и теперь работает правильно:echo -e "stats items\nquit" | nc localhost 11211 | grep -oe ':[0-9]*:' | grep -oe '[0-9]*' | sort | uniq | xargs -L1 -I{} bash -c 'echo -e "stats cachedump {} 1000\nquit" | nc localhost 11211'
Спасибо, что поделились этим! Довольно полезно для отладки :)Если у вас установлены PHP и PHP-memcached, вы можете запустить
источник
$c->setOption(Memcached::OPT_BINARY_PROTOCOL, false);
для более новых версий Memcachedудар
Чтобы получить список ключей в Bash, выполните следующие действия.
Сначала определите следующую функцию-оболочку, чтобы упростить ее использование (скопируйте и вставьте в оболочку):
Memcached 1.4.31 и выше
Вы можете использовать
lru_crawler metadump all
команду для дампа (большей части) метаданных (всех) элементов в кэше.Пример команды с использованием ранее определенной функции:
См .: ReleaseNotes1431 .
Memcached 1.4.30 и ниже
Получите список плит с помощью команды статистики элементов , например:
Для каждого класса slub вы можете получить список элементов, указав идентификатор slub вместе с ограниченным числом (
0
- неограниченно):Примечание: вам нужно сделать это для каждого сервера memcached.
Чтобы перечислить все ключи из всех заглушек, вот однострочный (на один сервер):
Примечание. Приведенная выше команда может вызвать серьезные проблемы с производительностью при доступе к элементам, поэтому не рекомендуется запускать ее в реальном времени.
Ноты:
Источник: GH-405 .
Связанный:
protocol.txt
файл Docs.источник
Самый простой способ - использовать пакет python-memcached-stats, https://github.com/abstatic/python-memcached-stats
Метод keys () должен помочь вам.
Пример -
источник
python -m memcached_stats <ip> <port>