Lihat konten memcached

36

Apakah ada alat untuk mengeksplorasi apa yang saat ini di-cache di dalam kolam memcached? Tidak banyak grafik, tetapi kunci / nilai aktual saat ini disimpan.

Tom
sumber

Jawaban:

9

Coba stats items- yaitu

echo "stats items" | nc 127.0.0.1 11211
danlefree
sumber
16
Bagaimana ini menjawab pertanyaan ?! Ini hanya memberikan statistik server, tidak mengambil kunci apa pun.
Jagtesh Chadha
24

Jawaban yang benar adalah echo "stats cachedump SLABS_ID LIMIT" | nc HOSTNAME PORT

misalnya. echo "stats cachedump 15 4" | nc 127.0.0.1 11211

Ini akan memberikan output pada baris:

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

Catatan: Ini adalah perintah tidak berdokumen yang tidak didukung oleh tim memcached dan dapat dihapus dalam versi apa pun. Untuk referensi lengkap, lihat Memahami statistik Memcached statistik cachedump perintah .

Jagtesh Chadha
sumber
cachedump terbatas pada jumlah data yang tidak berdokumen, tidak greate dari 1-2mb sehingga tidak dapat diandalkan
John
11

alat memcached

Dalam versi terbaru memcachedada juga memcached-toolskrip perl, misalnya penggunaan:

memcached-tool localhost:11211 dump | less

yang membuang semua kunci dan nilai.

memdump

Untuk membuang daftar kunci dari server, gunakan memcdump/ memdumpalat, mis

memcdump --servers=localhost 

Untuk membuang semua objek:

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

Untuk membuang semua nilai kunci ke file terpisah:

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

memccat

Untuk mencetak nilai kunci, Anda dapat menggunakan memccatperintah, mis

memccat CACHE-KEY

Pesta

Untuk membuang semua kunci di Bash shell, coba:

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

netcat

Berikut adalah contoh untuk mendapatkan nilai dari satu item menggunakan netcat:

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

Python

Lihat: Bagaimana cara mengekspor semua kunci dan nilai dari memcached dengan Python?

kenorb
sumber
2
Jawaban ini membantu saya menemukan alat memcached yang sebenarnya : memcdump . Lihat jawaban ini: stackoverflow.com/a/14491419/720360
mmuller
1
Saya pertama kali harus melakukannya apt install libmemcached-tools, tetapi kemudian itu masih belum di jalan saya, jadi /usr/share/memcached/scripts/memcached-tool localhost:11211 dump. Ubuntu 18.
Camille Goudeseune
7

Coba gunakan telnetperintah, misalnya:

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

Instal libmemcached-toolsdan kemudian Anda dapat menggunakan perintah ini untuk mendapatkan semua kunci:

memcdump --server=127.0.0.1

Untuk melihat kontennya, Anda dapat meminta kunci tertentu:

memccat --server=127.0.0.1 SOME_KEY

atau Anda dapat mengulang daftar kunci di Bash:

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

Pastikan untuk menggunakan 127.0.0.1 (jika Anda menjalankan perintah pada host yang sama) karena localhostsepertinya tidak berfungsi.

Tobia
sumber
2

Dalam memcached dasar saya tidak berpikir ada cara untuk menanyakan kunci yang disimpan di server. Satu-satunya pemikiran yang bisa Anda dapatkan adalah statistik yang terkait dengan penyimpanan dan penyimpanan barang.

Beberapa vendor yang telah mengembangkan solusi yang sesuai memcached, misalnya Gear6 , telah menambahkan fungsionalitas untuk memungkinkan permintaan.

Chris
sumber