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


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.