Memcached içeriğini görüntüle


36

Şu anda ezilmiş bir havuzda önbelleğe alınmış olanı keşfetmek için herhangi bir araç var mı? Bazı grafikler değil, şu anda depolanan gerçek anahtar / değerler.

Yanıtlar:


9

Deneyin stats items- yani

echo "stats items" | nc 127.0.0.1 11211

16
Bu soruya nasıl cevap veriyor ?! Bu sadece sunucu istatistiklerini verir, herhangi bir anahtar almaz.
Jagtesh Chadha

24

Doğru cevap echo "stats cachedump SLABS_ID LIMIT" | nc HOSTNAME PORT

Örneğin. echo "stats cachedump 15 4" | nc 127.0.0.1 11211

Bu, şu satırlardaki çıktıyı verir:

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

Not: Bu, memcached ekibi tarafından desteklenmeyen ve herhangi bir sürümde kaldırılabilen belgelenmemiş bir komuttur. Tam referans için Memcached istatistiklerini anlama cachedump komutunu inceleyin .


cachedump belgelenmemiş miktarda veri ile sınırlıdır, 1-2mb'den daha büyük değildir, bu nedenle güvenilir değildir
John

11

memcached-aracı

Son versiyonunda perl betiği memcachedde var memcached-tool, örneğin kullanım:

memcached-tool localhost:11211 dump | less

tüm anahtarları ve değerleri boşa harcar.

MemDump

Bir sunucudan bir anahtar listesi dökmek için, memcdump/ memdumparacını kullanın , örn.

memcdump --servers=localhost 

Tüm nesneleri atmak için:

memcdump --servers=localhost | xargs -L1 -I% sh -c 'echo "get %" | nc localhost 11211'

Tüm anahtar değerleri ayrı dosyalara dökmek için:

while read -r key; do [ -f "$key" ] || echo "get $key" | nc localhost 11211 > "$key.dump"; done < <(memcdump --server localhost)

memccat

Bir anahtar değeri yazdırmak için memccat, örneğin

memccat CACHE-KEY

darbe

Tüm anahtarları Bash kabuğuna atmak için şunu deneyin:

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

netcat'in

Tek bir öğenin değerini kullanarak örnek alıyorsunuz netcat:

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

piton

Bakınız: Tüm anahtarlar ve değerler Python ile memcached'den nasıl dışarı aktarılır?


2
Bu cevap asıl memcached aracını bulmama yardım etti : memcdump . Bu cevabı gör: stackoverflow.com/a/14491419/720360
mmuller

1
Önce mecburdum apt install libmemcached-tools, ama sonra hala yolumda değildi, o yüzden /usr/share/memcached/scripts/memcached-tool localhost:11211 dump. Ubuntu 18.
Camille Goudeseune

7

telnetKomutu kullanmayı deneyin , örneğin:

$ telnet 0 11211
stats
stats items
set key 1 23 8
get key

6

Kur libmemcached-toolsve sonra bu komutu tüm anahtarları almak için kullanabilirsin:

memcdump --server=127.0.0.1

İçeriği görmek için belirli bir anahtar isteyebilirsiniz:

memccat --server=127.0.0.1 SOME_KEY

ya da Bash’deki anahtar listesi üzerinde dolaşabilirsiniz:

for key in $(memcdump --server=127.0.0.1); do echo ------ $key ------; memccat --server=127.0.0.1 $key; done

127.0.0.1 kullandığınızdan emin olun (aynı ana bilgisayarda komutu çalıştırıyorsanız) çünkü localhostçalışmaz.


2

Temel memcached içinde sunucuda saklanan anahtarları sorgulamanın herhangi bir yolu olduğunu sanmıyorum. Alabileceğiniz tek düşünce, depolama ve depolanan öğelerle ilgili istatistiklerdir.

Bununla birlikte , memcached uyumlu çözümler geliştiren bazı satıcılar, örneğin Gear6 , sorgulamaya izin vermek için işlevsellik ekledi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.