मेमकेड की सामग्री देखें


36

क्या यह पता लगाने के लिए कोई उपकरण हैं कि वर्तमान में एक मेमेकैल्ड पूल के अंदर क्या कैश है? कुछ अधिक रेखांकन नहीं, लेकिन वर्तमान में संग्रहीत वास्तविक कुंजी / मान।

जवाबों:


9

कोशिश stats items- यानी

echo "stats items" | nc 127.0.0.1 11211

16
कैसे इस सवाल का जवाब देता है ?! यह केवल सर्वर आँकड़े देता है, किसी भी कुंजी को पुनः प्राप्त नहीं करता है।
जगदीश चड्ढा

24

सही उत्तर होगा 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

नोट: यह एक अनकम्फर्टेबल कमांड है जो मेम्केच्ड टीम द्वारा समर्थित नहीं है और इसे किसी भी संस्करण में हटाया जा सकता है। पूर्ण संदर्भ के लिए, अंडरस्टैंडिंग मेमेकैट्स स्टैट्स कैश्ड कमांड को देखें


कैश्पम्प डेटा की एक अनिर्धारित मात्रा तक सीमित है, 1-2mb से महान नहीं है इसलिए यह विश्वसनीय नहीं है
जॉन

11

memcached-उपकरण

वहाँ के हाल के संस्करण में memcachedभी memcached-toolपर्ल स्क्रिप्ट है, उदाहरण के लिए:

memcached-tool localhost:11211 dump | less

जो सभी कुंजियों और मूल्यों को धराशायी करता है।

memdump

किसी सर्वर से कुंजियों की सूची को डंप करने के लिए, उपयोग memcdump/ memdumpउपकरण, जैसे

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कमांड का उपयोग कर सकते हैं , जैसे

memccat CACHE-KEY

दे घुमा के

बैश शेल में सभी कुंजियों को डंप करने के लिए, कोशिश करें:

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

netcat

यहां एकल आइटम का उपयोग करने के लिए उदाहरण दिया गया है netcat:

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

अजगर

देखें: पायथन के साथ सम्‍मिलित सभी कुंजियों और मानों को कैसे निर्यात करें?


2
इस जवाब ने मुझे वास्तविक मेम्केच्ड टूल खोजने में मदद की : मेमबंप । इसका उत्तर देखें: stackoverflow.com/a/14491419/720360
mmuller

1
मैं पहले था apt install libmemcached-tools, लेकिन फिर भी यह मेरे रास्ते पर नहीं था, इसलिए /usr/share/memcached/scripts/memcached-tool localhost:11211 dump। उबंटू 18.
केमिली गौडेयुन

7

telnetआदेश का उपयोग करने का प्रयास करें , जैसे:

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

6

स्थापित करें libmemcached-toolsऔर फिर आप सभी कुंजियों को प्राप्त करने के लिए इस कमांड का उपयोग कर सकते हैं:

memcdump --server=127.0.0.1

सामग्री देखने के लिए, आप एक विशिष्ट कुंजी के लिए पूछ सकते हैं:

memccat --server=127.0.0.1 SOME_KEY

या आप बैश में चाबियों की सूची पर लूप कर सकते हैं:

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काम नहीं लगता है।


2

बुनियादी ज्ञापन में मुझे नहीं लगता कि सर्वर में संग्रहीत कुंजी के लिए क्वेरी करने का कोई तरीका है। आपको लगता है कि केवल आप भंडारण और संग्रहीत वस्तुओं से संबंधित आंकड़े प्राप्त कर सकते हैं।

कुछ विक्रेताओं ने मेमेकैल्ड कंप्लेंट सॉल्यूशंस विकसित किए हैं, जैसे कि गियर 6 , ने क्वेरी करने की अनुमति देने के लिए कार्यक्षमता को जोड़ा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.