มีเครื่องมือใดบ้างในการสำรวจสิ่งที่แคชในปัจจุบันในพูล memcached หรือไม่? มีกราฟไม่มากนัก แต่มีคีย์ / ค่าจริงที่เก็บอยู่ในปัจจุบัน
มีเครื่องมือใดบ้างในการสำรวจสิ่งที่แคชในปัจจุบันในพูล memcached หรือไม่? มีกราฟไม่มากนัก แต่มีคีย์ / ค่าจริงที่เก็บอยู่ในปัจจุบัน
คำตอบ:
ลองstats items
- เช่น
echo "stats items" | nc 127.0.0.1 11211
คำตอบที่ถูกต้องก็คือ 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
หมายเหตุ:นี่เป็นคำสั่งที่ไม่มีเอกสารซึ่งไม่ได้รับการสนับสนุนโดยทีม memcached และสามารถลบออกได้ในทุกรุ่น สำหรับอ้างอิงที่สมบูรณ์, ตรวจสอบการทำความเข้าใจ Memcached สถิติคำสั่ง
ในเวอร์ชั่นล่าสุดmemcached
ยังมีmemcached-tool
สคริปต์ Perl เช่นการใช้งาน:
memcached-tool localhost:11211 dump | less
ซึ่งทิ้งคีย์และค่าทั้งหมด
ในการดัมพ์รายการคีย์จากเซิร์ฟเวอร์ให้ใช้memcdump
/ memdump
tool เช่น
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 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
ดู: วิธีการส่งออกคีย์และค่าทั้งหมดจาก memcached ด้วย Python ได้อย่างไร
apt install libmemcached-tools
/usr/share/memcached/scripts/memcached-tool localhost:11211 dump
Ubuntu 18.
ลองใช้telnet
คำสั่งเช่น:
$ telnet 0 11211
stats
stats items
set key 1 23 8
get key
ติดตั้ง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
ดูเหมือนจะไม่ทำงาน
ใน memcached พื้นฐานฉันไม่คิดว่าจะมีวิธีการสอบถามคีย์ที่เก็บไว้ในเซิร์ฟเวอร์ เพียงคิดว่าคุณจะได้รับคือสถิติที่เกี่ยวข้องกับการจัดเก็บและรายการที่เก็บไว้
ผู้ค้าบางรายที่ได้พัฒนาโซลูชันที่สอดคล้องกับ memcached เช่นGear6ได้เพิ่มฟังก์ชันการทำงานเพื่อให้สามารถสอบถามได้