Bagaimana saya bisa mengatur semua kunci dalam instance memcached saya?
Saya mencoba googling, tetapi tidak menemukan banyak kecuali yang PHP
mendukung getAllKeys
metode , yang berarti sebenarnya mungkin melakukan ini entah bagaimana. Bagaimana saya bisa mendapatkan yang sama dalam sesi telnet?
Saya telah mencoba semua opsi terkait pengambilan yang disebutkan dalam lembar contekan memcached dan ringkasan perintah telnet Memcached , tetapi tidak ada yang bekerja dan saya bingung untuk menemukan cara yang benar untuk melakukan ini.
Catatan: Saya sedang melakukan ini dalam pengembangan, sehingga dapat diasumsikan bahwa tidak akan ada masalah karena kunci baru diatur atau kondisi balapan lainnya terjadi, dan jumlah kunci juga akan terbatas.
Jawaban:
Menemukan jalan, berkat tautan di sini (dengan diskusi grup google asli di sini )
Pertama,
Telnet
ke server Anda:Berikutnya, daftar item untuk mendapatkan id pelat:
Angka pertama setelah 'item' adalah id slab. Minta dump cache untuk setiap slab id, dengan batas jumlah kunci maksimum untuk dibuang:
sumber
b
adalah byte,s
adalah detik waktu jamanlru_crawler metadump all
yang akan membuang semua kunci cache, bukan "hanya" 1M pertama .. github.com/memcached/memcached/blob/…memdump
Ada
memcdump
(kadang-kadangmemdump
) perintah untuk itu (bagian darilibmemcached-tools
), misalnya:yang akan mengembalikan semua kunci.
memcached-tool
Dalam versi terbaru
memcached
ada jugamemcached-tool
perintah, misalnyayang membuang semua kunci dan nilai.
Lihat juga:
sumber
dump
sub-perintah untukmemcached-tool
tampaknya untuk membersihkan cache :( --might lebih aman untuk digunakandisplay
ataustats
pertama.libmemcached-tools
, dan biner alat ini disebut memcdump.memcached-tool
itu agak tersembunyi di direktori, yang mungkin tidak dalam standarPATH
- setidaknya di Ubuntu Xenial - sini:/usr/share/memcached/scripts/
Berdasarkan jawaban @mu 無 di sini. Saya telah menulis skrip dump cache.
Script membuang semua konten dari server memcached. Ini diuji dengan Ubuntu 12.04 dan mem-host localhost, sehingga milage Anda dapat bervariasi.
Apa yang dilakukannya, ia melewati semua lempengan cache dan mencetak 1000 entri masing-masing.
Perlu diketahui batas-batas tertentu dari skrip ini, misalnya skrip ini mungkin tidak untuk server cache 5GB. Tapi ini berguna untuk keperluan debugging di mesin lokal.
sumber
memcached 1.4.21-1.1+deb8u1
saya harus secara eksplisit mengirim perintah berhenti untuk memcached. Saya memodifikasi perintah Anda untuk ini dan berfungsi dengan baik sekarang: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'
Terima kasih telah berbagi ini! Cukup berguna untuk debugging :)Jika Anda telah menginstal PHP & PHP-memcached, Anda dapat menjalankannya
sumber
$c->setOption(Memcached::OPT_BINARY_PROTOCOL, false);
Untuk versi Memcached yang lebih baruPesta
Untuk mendapatkan daftar kunci di Bash, ikuti langkah-langkah ini.
Pertama, tentukan fungsi pembungkus berikut untuk membuatnya mudah digunakan (salin dan tempel ke shell):
Memcached 1.4.31 ke atas
Anda dapat menggunakan
lru_crawler metadump all
perintah untuk membuang (sebagian besar) metadata untuk (semua) item dalam cache.Contoh perintah dengan menggunakan fungsi yang didefinisikan sebelumnya:
Lihat: ReleaseNotes1431 .
Memcached 1.4.30 dan di bawah
Dapatkan daftar lempengan dengan menggunakan perintah statistik item , misalnya:
Untuk setiap kelas slub, Anda bisa mendapatkan daftar item dengan menentukan id slub bersama dengan nomor batas (
0
- tidak terbatas):Catatan: Anda perlu melakukan ini untuk setiap server memcached.
Untuk daftar semua kunci dari semua bertopik, di sini adalah satu-liner (per satu server):
Catatan: Perintah di atas dapat menyebabkan masalah kinerja yang parah saat mengakses item, jadi tidak disarankan untuk dijalankan secara langsung.
Catatan:
Sumber: GH-405 .
Terkait:
protocol.txt
file dokumen.sumber
Cara termudah adalah dengan menggunakan paket python-memcached-stats, https://github.com/abstatic/python-memcached-stats
Metode keys () harus membantu Anda.
Contoh -
sumber
python -m memcached_stats <ip> <port>