Bash
Để có được danh sách các khóa trong Bash, hãy làm theo các bước sau.
Đầu tiên, xác định hàm bao bọc sau để đơn giản hơn (sao chép và dán vào shell):
function memcmd() {
exec {memcache}<>/dev/tcp/localhost/11211
printf "%s\n%s\n" "$*" quit >&${memcache}
cat <&${memcache}
}
Memcached 1.4.31 trở lên
Bạn có thể sử dụng lru_crawler metadump all
lệnh để kết xuất (hầu hết) siêu dữ liệu cho (tất cả) các mục trong bộ đệm.
Trái ngược với cachedump
nó, nó không gây ra vấn đề hiệu năng nghiêm trọng và không có giới hạn về số lượng phím có thể bị đổ.
Lệnh ví dụ bằng cách sử dụng hàm được xác định trước đó:
memcmd lru_crawler metadump all
Xem: ReleaseNotes1431 .
Memcached 1.4.30 trở xuống
Nhận danh sách các tấm bằng cách sử dụng lệnh thống kê vật phẩm , ví dụ:
memcmd stats items
Đối với mỗi lớp slub, bạn có thể nhận danh sách các mục bằng cách chỉ định id slub cùng với số giới hạn ( 0
- không giới hạn):
memcmd stats cachedump 1 0
memcmd stats cachedump 2 0
memcmd stats cachedump 3 0
memcmd stats cachedump 4 0
...
Lưu ý: Bạn cần làm điều này cho mỗi máy chủ memcached.
Để liệt kê tất cả các khóa từ tất cả các sơ khai, đây là một lớp (trên một máy chủ):
for id in $(memcmd stats items | grep -o ":[0-9]\+:" | tr -d : | sort -nu); do
memcmd stats cachedump $id 0
done
Lưu ý: Lệnh trên có thể gây ra sự cố hiệu suất nghiêm trọng trong khi truy cập các mục, vì vậy không nên chạy trực tiếp.
Ghi chú:
stats cachedump
chỉ loại bỏ HOT_LRU
(IIRC?), được quản lý bởi một luồng nền khi hoạt động xảy ra. Điều này có nghĩa là dưới một phiên bản đủ mới mà thuật toán 2Q đã kích hoạt, bạn sẽ có được các chế độ xem nhanh về những gì chỉ trong một trong các LRU.
Nếu bạn muốn xem tất cả mọi thứ, lru_crawler metadump 1
(hoặc lru_crawler metadump all
) là phương thức mới được hỗ trợ chính thức mới sẽ kết xuất không đồng bộ nhiều khóa như bạn muốn. bạn sẽ nhận được chúng không theo thứ tự nhưng nó đạt tất cả các LRU và trừ khi bạn xóa / thay thế các mục nhiều lần chạy sẽ mang lại kết quả tương tự.
Nguồn: GH-405 .
Liên quan: