Xem nội dung của memcached


36

Có công cụ nào để khám phá những gì hiện được lưu trong bộ nhớ đệm không? Không có nhiều biểu đồ, nhưng khóa / giá trị thực tế hiện được lưu trữ.

Câu trả lời:


9

Hãy thử stats items- tức là

echo "stats items" | nc 127.0.0.1 11211

16
Làm thế nào điều này trả lời câu hỏi?! Điều này chỉ đưa ra số liệu thống kê máy chủ, không lấy bất kỳ khóa nào.
Jagtesh Chadha

24

Câu trả lời đúng sẽ là echo "stats cachedump SLABS_ID LIMIT" | nc HOSTNAME PORT

ví dụ. echo "stats cachedump 15 4" | nc 127.0.0.1 11211

Điều này sẽ cung cấp đầu ra trên các dòng:

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

Lưu ý: Đây là một lệnh không có giấy tờ không được nhóm memcached hỗ trợ và có thể được gỡ bỏ trong bất kỳ phiên bản nào. Để tham khảo đầy đủ, hãy kiểm tra Tìm hiểu lệnh bộ nhớ cache thống kê Memcached .


bộ nhớ đệm được giới hạn ở một lượng dữ liệu không có giấy tờ, không lớn hơn 1-2mb nên không đáng tin cậy
John

11

công cụ memcached

Trong phiên bản gần đây memcachedcũng có memcached-tooltập lệnh perl, ví dụ: cách sử dụng:

memcached-tool localhost:11211 dump | less

mà bỏ tất cả các khóa và giá trị.

ghi nhớ

Để kết xuất danh sách các khóa từ máy chủ, hãy sử dụng memcdump/ memdumptool, vd

memcdump --servers=localhost 

Để đổ tất cả các đối tượng:

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

Để kết xuất tất cả các giá trị chính vào các tệp riêng biệt:

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

memccat

Để in một giá trị khóa, bạn có thể sử dụng memccatlệnh, vd

memccat CACHE-KEY

Bash

Để đổ tất cả các khóa trong Bash shell, hãy thử:

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

mèo

Dưới đây là ví dụ để nhận giá trị của một mục bằng cách sử dụng netcat:

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

Con trăn

Xem: Làm cách nào để xuất tất cả các khóa và giá trị từ memcached bằng Python?


2
Câu trả lời này đã giúp tôi tìm ra công cụ memcached thực tế : memcdump . Xem câu trả lời này: stackoverflow.com/a/14491419/720360
mmuller

1
Trước tiên tôi phải làm thế apt install libmemcached-tools, nhưng sau đó nó vẫn không nằm trên con đường của tôi /usr/share/memcached/scripts/memcached-tool localhost:11211 dump. Ubuntu 18.
Camille Goudeseune

7

Hãy thử sử dụng telnetlệnh, ví dụ:

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

6

Cài đặt libmemcached-toolsvà sau đó bạn có thể sử dụng lệnh này để nhận tất cả các phím:

memcdump --server=127.0.0.1

Để xem nội dung, bạn có thể yêu cầu một khóa cụ thể:

memccat --server=127.0.0.1 SOME_KEY

hoặc bạn có thể lặp qua danh sách các khóa trong Bash:

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

Đảm bảo sử dụng 127.0.0.1 (nếu bạn đang chạy lệnh trên cùng một máy chủ) vì localhostdường như không hoạt động.


2

Trong memcached cơ bản tôi không nghĩ có bất kỳ cách truy vấn nào cho các khóa được lưu trữ trong máy chủ. Suy nghĩ duy nhất bạn có thể nhận được là số liệu thống kê liên quan đến lưu trữ và các mặt hàng được lưu trữ.

Một số nhà cung cấp đã phát triển các giải pháp tuân thủ memcached, ví dụ Gear6 , tuy nhiên đã thêm chức năng để cho phép truy vấn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.