ज्ञापन में सभी चाबियाँ सेट करें


131

मुझे अपने मेम किए गए उदाहरण (सेटों) में सभी कुंजियाँ कैसे मिल सकती हैं?

मैंने गुगली करने की कोशिश की, लेकिन PHPएक getAllKeysविधि का समर्थन करने के अलावा बहुत कुछ नहीं मिला , जिसका अर्थ है कि यह वास्तव में किसी भी तरह से करना संभव है। टेलनेट सत्र के भीतर मैं कैसे प्राप्त कर सकता हूं?

मैंने मेम्नेच्ड चीट शीट और मेम्केच्ड टेलनेट कमांड सारांश में उल्लिखित सभी रिट्रीवल संबंधित विकल्पों की कोशिश की है , लेकिन उनमें से कोई भी काम नहीं करता है और मुझे ऐसा करने का सही तरीका खोजने का नुकसान है।

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


मेरी पोस्ट की जाँच करें । मुझे भी यही समस्या थी और मुझे इसका हल मिल गया।
पीटर वर्गा

github.com/clickalicious/phpmemadmin मददगार लगता है (यदि मैं यह पता लगा सकता हूं कि लारवेल होमस्टेड वैग्रैंट के साथ काम करने के लिए इसे कैसे प्राप्त किया जाता है? वर्तमान में यह कोई कुंजी नहीं दिखा रहा है)।
रयान

जवाबों:


178

एक रास्ता मिला, यहाँ लिंक के लिए धन्यवाद (मूल Google समूह चर्चा के साथ )

सबसे पहले, Telnetअपने सर्वर पर:

telnet 127.0.0.1 11211

इसके बाद, स्लैब आईडी प्राप्त करने के लिए आइटम सूचीबद्ध करें:

आँकड़े आइटम
STAT आइटम: 3: नंबर 1
स्टेट आइटम: 3: उम्र 498
स्टेट आइटम: 22: नंबर 1
स्टेट आइटम: 22: उम्र 498
समाप्त

'आइटम' के बाद पहला नंबर स्लैब आईडी है। प्रत्येक स्लैब आईडी के लिए कैश डंप का अनुरोध करें, डंप करने के लिए अधिकतम कुंजियों की सीमा के साथ:

आंकड़े कैश्पम्प 3 100
ITEM views.decorators.cache.cache_header..cc7d9 [6 b; 1256056128 s]
समाप्त

आँकड़े 22 100 कैश्प
ITEM विचार .ecorators.cache.cache_page..8427e [7736 बी; 1256056128 s]
समाप्त


4
कृपया ध्यान दें कि आँकड़े कैश्प एक अनिर्दिष्ट सुविधा है और मेमेकैक्ड टीम द्वारा समर्थित नहीं है। यह केवल डिबगिंग के लिए है और उत्पादन के उपयोग के लिए नहीं है।
mikewied

ओह ठीक। जैसा कि मैंने अपने प्रश्न में कहा, मैं वर्तमान में केवल विकास मोड में हूं और इसके लिए डिबगिंग की आवश्यकता है।
म्यू m

3
bबाइट्स है, sयुगांतर सेकंड सेकंड है
अब्राहम संघ

1
@ शायद आप पहले सक्रिय उत्तरों को देख रहे हैं, जो कि पिछली पोस्ट के आधार पर छाँटते हैं जब उन्होंने अंतिम गतिविधि की थी। यदि हाँ, तो आप प्रश्न के ठीक नीचे से सक्रिय / सबसे पुराने / वोटों में से किसी एक को चुनकर बदल सकते हैं। उसके अलावा, यह उत्तर गुप्त मोड में सबसे ऊपर है।
एमयू m

2
वहाँ भी है lru_crawler metadump allकि सभी कैश कुंजी डंप करेंगे, न कि "सिर्फ" पहले 1M .. github.com/memcached/memcached/blob/…
Kaos

65

memdump

इसके लिए memcdump(कभी-कभी memdump) कमांड (भाग libmemcached-tools) होती है, जैसे:

memcdump --servers=localhost

जो सभी कुंजी वापस कर देगा।


memcached-tool

वहाँ के हाल के संस्करण में memcachedभी memcached-toolकमांड है, जैसे

memcached-tool localhost:11211 dump | less

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

यह सभी देखें:


4
'मेमडप' के साथ सावधान यह कमांड आपके टर्मिनल को क्रैश करने का एक शानदार तरीका है।
डेविडेब

5
सावधान! के लिए dumpउप-कमान memcached-toolकैश को साफ करने के लिए लगता है :(displaystats
MarkHu

4
उबंटू ज़ेनियल में, जिस पैकेज में मेमडंप होता है उसे कहा जाता है libmemcached-tools, और टूल के बाइनरी को इसके बजाय मेम्बकंप कहा जाता है।
तत्पश्चात

5
इसके लिए तलाश करने वालों के लिए memcached-toolयह एक निर्देशिका में कुछ हद तक छिपा हुआ है, जो एक मानक में नहीं हो सकता है PATH- कम से कम उबंटू ज़ेनियल पर - यहाँ:/usr/share/memcached/scripts/
sxc731

17

यहाँ @mu here उत्तर के आधार पर । मैंने कैश डंप स्क्रिप्ट लिखी है।

स्क्रिप्ट एक संदेश सर्वर की सभी सामग्री को डंप कर देती है। यह Ubuntu 12.04 और एक स्थानीय होस्ट के साथ परीक्षण किया गया है, इसलिए आपका लाभ भिन्न हो सकता है।

#!/usr/bin/env bash

echo 'stats items'  \
| nc localhost 11211  \
| grep -oe ':[0-9]*:'  \
| grep -oe '[0-9]*'  \
| sort  \
| uniq  \
| xargs -L1 -I{} bash -c 'echo "stats cachedump {} 1000" | nc localhost 11211'

यह क्या करता है, यह सभी कैश स्लैब के माध्यम से जाता है और प्रत्येक की 1000 प्रविष्टियों को प्रिंट करता है।

कृपया इस स्क्रिप्ट की कुछ सीमाओं से अवगत रहें, उदाहरण के लिए यह 5GB कैश सर्वर के लिए पैमाना नहीं हो सकता है। लेकिन यह स्थानीय मशीन पर डिबगिंग उद्देश्यों के लिए उपयोगी है।


3
डेबियन 8 के साथ memcached 1.4.21-1.1+deb8u1मुझे स्पष्ट रूप से एक छोड़ दिया आदेश भेजना था। मैंने आपकी कमांड को इस पर संशोधित किया और अब ठीक से काम करता है: 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'इसे साझा करने के लिए धन्यवाद! डिबगिंग के लिए काफी उपयोगी :)
Cha0s

किसी कारण से grep -oe '[0-9] *' मैक पर iTerm2 में काम नहीं करता है, को grep -Eo '[0-9] {1,99}} से बदलना पड़ा
अधिकतम

यह निफ्टी है, लेकिन यह कुछ चाबियाँ, किसी भी विचार क्यों याद आती है?
उपयोगकर्ता

14

यदि आपके पास PHP & PHP-memcached स्थापित है, तो आप चला सकते हैं

$ php -r '$c = new Memcached(); $c->addServer("localhost", 11211); var_dump( $c->getAllKeys() );'

1
AddServer के बाद आपको यह करने की आवश्यकता है: $c->setOption(Memcached::OPT_BINARY_PROTOCOL, false); Memcached के नए संस्करणों के लिए
हैक 4

फिर भी उत्तर बूल (झूठा) है :-(
वोल्फगैंग ब्लेसन

2
@WolfgangBlessen - यह एक बग के कारण मेमकेड में है - यह नवीनतम संस्करणों में तय किया गया है। github.com/php-memcached-dev/php-memcached/issues/203
बिलीनोह

@ बिलियोनो थक्स, मैं वास्तव में अब परिणाम देख रहा हूं और मेमकोच्ड उपयोगी होने लगा है :-)
वोल्फगैंग ब्लेसन

12

दे घुमा के

बैश में चाबियों की सूची प्राप्त करने के लिए, इन चरणों का पालन करें।

सबसे पहले, निम्न आवरण फ़ंक्शन को सरल बनाने के लिए इसे परिभाषित करें (प्रतिलिपि और शेल में पेस्ट करें):

function memcmd() {
  exec {memcache}<>/dev/tcp/localhost/11211
  printf "%s\n%s\n" "$*" quit >&${memcache}
  cat <&${memcache}
}

1.4.31 और इसके बाद के संस्करण

आप lru_crawler metadump allकैश में आइटम (सभी के लिए) मेटाडेटा (अधिकांश) को डंप करने के लिए कमांड का उपयोग कर सकते हैं ।

विरोध के रूप में cachedump , यह गंभीर प्रदर्शन समस्याओं का कारण नहीं बनता है और इसकी कुंजी की कोई सीमा नहीं है जिसे डंप किया जा सकता है।

पहले से परिभाषित फ़ंक्शन का उपयोग करके उदाहरण कमांड:

memcmd lru_crawler metadump all

देखें: ReleaseNotes1431


नीचे 1.4.30 और नीचे मेमस्कैल्ड

आइटम सांख्यिकी आदेश का उपयोग करके स्लैब की सूची प्राप्त करें , जैसे:

memcmd stats items

प्रत्येक स्लब क्लास के लिए, आप सीमा संख्या ( 0- असीमित) के साथ स्लब आईडी निर्दिष्ट करके आइटमों की सूची प्राप्त कर सकते हैं :

memcmd stats cachedump 1 0
memcmd stats cachedump 2 0
memcmd stats cachedump 3 0
memcmd stats cachedump 4 0
...

नोट: आपको प्रत्येक मेमेकड सर्वर के लिए ऐसा करने की आवश्यकता है।

सभी स्टब्स से सभी कुंजियों को सूचीबद्ध करने के लिए, यहां एक-लाइनर (प्रति सर्वर) है:

for id in $(memcmd stats items | grep -o ":[0-9]\+:" | tr -d : | sort -nu); do
    memcmd stats cachedump $id 0
done

नोट: उपरोक्त कमांड आइटमों को एक्सेस करते समय गंभीर प्रदर्शन की समस्या पैदा कर सकता है, इसलिए इसे लाइव पर चलाने की सलाह नहीं दी जाती है।


टिप्पणियाँ:

stats cachedump केवल डंप करता है HOT_LRU (IIRC?), जो एक पृष्ठभूमि थ्रेड द्वारा प्रबंधित किया जाता है जैसा कि गतिविधि होती है। इसका मतलब है कि एक नए पर्याप्त संस्करण के तहत, जो 2 क्यू एल्गो सक्षम करता है, आपको LRU में सिर्फ एक में क्या है के स्नैपशॉट विचार मिलेंगे।

यदि आप सब कुछ देखना चाहते हैं, lru_crawler metadump 1(या lru_crawler metadump all) नया ज्यादातर आधिकारिक तौर पर समर्थित तरीका है जो कि आप चाहते हैं के रूप में कई चाबियाँ asynchronously डंप करेगा। आप उन्हें क्रम से बाहर कर देंगे, लेकिन यह सभी LRU को हिट करता है, और जब तक आप आइटम को हटा नहीं रहे / प्रतिस्थापित कर रहे हैं, तब तक एक ही परिणाम प्राप्त नहीं करना चाहिए।

स्रोत: GH-405


सम्बंधित:


5

सबसे आसान तरीका है कि अजगर-मेमकास्टेड-आँकड़े पैकेज का उपयोग करें , https://github.com/abstatic/python-memcached-stats

चाबियाँ () विधि आपको मिलनी चाहिए।

उदाहरण -

from memcached_stats import MemcachedStats
mem = MemcachedStats()

mem.keys()
['key-1',
 'key-2',
 'key-3',
 ... ]

1
आप इसे कमांड लाइन से भी कर सकते हैंpython -m memcached_stats <ip> <port>
Martijn

1
फिलहाल Python2।
मारियस

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