Переглянути вміст запам’ятовування


36

Чи є інструменти для дослідження того, що зараз є в кешованому басейні? Не багато графіків, а фактично збережені ключ / значення.

Відповіді:


9

Спробуйте stats items- тобто

echo "stats items" | nc 127.0.0.1 11211

16
Як це відповідає на питання ?! Це дає лише серверну статистику, не отримує жодних ключів.
Jagtesh Chadha

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

Примітка: Це незадокументована команда, яка не підтримується командою, що склалася, і її можна видалити в будь-якій версії. Для повної довідки ознайомтеся з командою Розуміння мемованної статистики кешованої пам’яті .


cachedump обмежений бездокументованою кількістю даних, не змащеною на 1-2 Мб, тому це не є надійним
Джон

11

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:

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

Пітон

Див.: Як експортувати всі ключі та значення з пам’яті з Python?


2
Ця відповідь допомогла мені знайти власне інструмент запам’ятовування : memcdump . Дивіться цей відповідь: stackoverflow.com/a/14491419/720360
mmuller

1
Спочатку мені довелося apt install libmemcached-tools, але потім все ще не було на моєму шляху, так /usr/share/memcached/scripts/memcached-tool localhost:11211 dump. Ubuntu 18.
Каміль Ґудесюн

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

У базовій пам'яті я не думаю, що існує спосіб запиту ключів, що зберігаються на сервері. Єдина думка, яку ви можете отримати, - це статистика, пов’язана зі зберіганням та збереженими предметами.

Деякі постачальники, які розробили сумісні сумісні рішення, наприклад, Gear6 , однак додали функціональність для дозволу на запити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.