पूरे वेब सर्वर को फिर से शुरू किए बिना मेमेचे को कैसे पुनरारंभ / साफ़ करें?


47

/opt/eduserver/eduserver मुझे विकल्प देता है:

उपयोग: / opt / eduserver / eduserver {start | stop | startphp | startwww | startooo | stopphp | stopwww | stopooo | restartph | | पुनरारंभ करें | पुनरारंभ करें | स्थिति | पुनरारंभ करें | पुनः लोड-बल-पुनः लोड} |

जहां मेम्कैश php मॉड्यूल है वहाँ memcache.iniमें /opt/eduserver/etc/php/conf.d

मैं कमांड लाइन से मेमकेच को साफ करना चाहता हूं। क्या मैं इसे वेब सर्वर के किसी अन्य हिस्से को 'टच' किए बिना किसी तरह से कर सकता हूं?

जवाबों:


94

हाँ। आप ज्ञापन को साफ़ कर सकते हैं। प्रयत्न, कोशिश:

telnet localhost 11211
flush_all
quit

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


3
क्या मैं यह गैर-संवादात्मक रूप से कर सकता हूं?
राडेक

2
मैं यह सत्यापित करने की कोशिश कर रहा हूं कि यह वास्तव में प्रभावी था। अब तक के आँकड़े अभी भी कुल_items 3926 को दर्शाते हैं। मैं उम्मीद कर रहा था कि कुल _items 0. से कम हो जाएगा। क्या यह नहीं है कि कैश को कैसे सत्यापित किया जाए?
डैनी आर्मस्ट्रांग

4
@DannyArmstrong, समयसीमा समाप्त होने पर केवल आइटम चिह्नित करें। Memcache प्रदर्शन कारणों से सीधे कैश से समयसीमा समाप्त आइटम नहीं निकालता है। आप समय-समय पर आइटम प्राप्त कर सकते हैं, इसलिए वे एक एपीआई परिप्रेक्ष्य से गायब हो गए हैं
टेरी जूल

@ टेरी - क्या आपके कहने का मतलब यह है कि "आपको एक्सपायर्ड आइटम नहीं मिल सकते"?
ब्रायन मैथ्यूज

हां मैं करता हूं। क्षमा करें
TerryE

40

यह भी netcat का उपयोग करके काम करेगा

echo "flush_all" | nc -q 2 localhost 11211 

फिर बस "ओके" की प्रतीक्षा करें।


4
डब्ल्यू / ओ हार्डकोड 2 सेकंड:printf "flush_all\nquit\n" | nc -q -1 127.1 11211
यूफ्यू

3
टाइमआउट के लिए OSX की जरूरत है:echo "flush_all" | nc -w 2 localhost 11211
mahemoff

w / o पद छोड़ना और इंतजार करना:printf "flush_all" | nc localhost 11211
Gianfranco P।

23

memcflush मेमचैच टूल में वही है जो आप चाहते हैं:

memcflush --servers=localhost:11211

localhostआपका सर्वर जो भी है उसे बदलें ।

यदि आप एक डेबियन-आधारित ओएस चला रहे हैं तो मेमेचे टूल को सर्वर पर स्थापित नहीं किया जा सकता है, आप इसे इस तरह स्थापित कर सकते हैं:

sudo apt-get install libmemcached-tools

2
Red Hat वितरण में, उपयोगिता को शामिल किया गया है libmemcached
केविन

8

बैश में आप इस फैंसी सिंटैक्स का उपयोग कर सकते हैं:

echo flush_all > /dev/tcp/localhost/11211

अन्यथा memflushकमांड का उपयोग करें :

memflush --servers=localhost

जैसा कि टेलनेट और एनसी हमारे सर्वर पर उपलब्ध नहीं था, पहला समाधान ठीक काम करता है, धन्यवाद।
गेट्ज़

4

बल्कि समय समाप्ति के लिए इंतज़ार कर की तुलना में आप का पालन करते हुए आदेश तात्कालिक कर सकते हैं flush_all के साथ quitआदेश:

printf "flush_all\r\nquit\r\n" | nc localhost 11211

वैकल्पिक रूप से यदि आपके पास नहीं है nc:

printf "flush_all\r\nquit\r\n" > /dev/tcp/127.0.0.1/11211

यद्यपि यह विधि एक आउटपुट का उत्पादन नहीं करेगी, हालांकि आप इसे बढ़ाकर statsदेख सकते हैं कि यह जाँच कर काम करता है cmd_flush


3

(sleep 2; echo flush_all; sleep 2; echo quit; ) | telnet 127.0.0.1 11211

यदि आप इसे गैर-संवादात्मक रूप से चलाना चाहते हैं

@heiko को धन्यवाद


यह मेरे लिए काम कर रहा था, क्योंकि मेरे पास एक मेजबान था जहां मैं nc. Note that I worked fine for me without either the initial नींद या अंतिम स्थापित नहीं करना चाहता था quit। मैंने किया( echo 'flush_all' ; sleep 2 ) | telnet myhost.fqdn.com 11211
जोशुआ ह्यूबर

0

यदि आप सिंटैक्स को जोड़ने के लिए एक सॉकेट का उपयोग करते हैं तो सिंटैक्स है

echo "flush_all" | nc -U ~/memcached.sock

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