Vraag hoe memcache opnieuw te starten / te wissen zonder de hele webserver opnieuw te starten?


/opt/eduserver/eduserver geeft me opties:

Gebruik: / opt / eduserver / eduserver   {Start | stop | startphp | startwww | startooo | stopphp | stopwww | stopooo | restartphp | restartwww | restartooo | statuut | restart | herladen | force-reload}

waar memcache de php-module is die er is memcache.ini in /opt/eduserver/etc/php/conf.d.

Ik wil de memcache wissen van de opdrachtregel. Kan ik het op de een of andere manier doen zonder een ander deel van de webserver aan te raken?


42
2018-04-13 07:33


oorsprong




antwoorden:


Ja. u kunt de memcache wissen. proberen:

telnet localhost 11211
flush_all
quit

als de memcache niet op localhost 11211 wordt uitgevoerd, moet u deze aanpassen.


87
2018-04-13 08:13



Kan ik dit niet interactief doen? - Radek
Ik probeer te verifiëren dat dit effectief was. Tot nu toe laat stats nog steeds total_items 3926 zien. Ik verwachtte dat total_items naar 0 daalde. Is dat niet hoe te controleren of de cache is leeggemaakt? - Danny Armstrong
@DannyArmstrong, flush markeert alleen items die zijn verlopen. Memcache verwijdert verlopen items uit de cache niet om prestatieredenen. U kunt verlopen items krijgen, dus deze zijn vanuit een API-perspectief verdwenen - TerryE
@TerryE - Bedoelt u te zeggen "U kunt geen verlopen artikelen krijgen" in plaats van "U kunt verlopen artikelen krijgen"? - Brian Matthews
Ja, ik wil. Sorry - TerryE


Dit werkt ook met netcat

echo "flush_all" | nc -q 2 localhost 11211 

Wacht dan gewoon op de "OK".


40
2018-02-06 10:48



zonder hardcoded 2 seconden: printf "flush_all\nquit\n" | nc -q -1 127.1 11211 - zhangyoufu
OSX heeft -w nodig voor time-out: echo "flush_all" | nc -w 2 localhost 11211 - mahemoff
zonder stoppen en wachten: printf "flush_all" | nc localhost 11211 - Gianfranco P.


memcflush in de memcache-tools is wat je wilt:

memcflush --servers=localhost:11211

Verandering localhost naar wat je server ook is.

De memcache-tools zijn mogelijk niet op de server geïnstalleerd. Als u een op Debian gebaseerd besturingssysteem gebruikt, kunt u dit op de volgende manier installeren:

sudo apt-get install libmemcached-tools

23
2017-07-06 16:26



In Red Hat-distributies is het hulpprogramma opgenomen in libmemcached. - Kevin


In Bash kunt u deze mooie syntax gebruiken:

echo flush_all > /dev/tcp/localhost/11211

Anders gebruiken memflush commando:

memflush --servers=localhost

7
2018-04-06 14:58



Omdat telnet en nc niet beschikbaar waren op onze servers, werkt de eerste oplossing prima, bedankt. - Getz


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

als je het niet-interactief wilt uitvoeren

dankzij @heiko


3
2018-05-18 22:58



Dit werkte voor mij, omdat ik een host had waar ik niet wilde installeren nc. Note that I worked fine for me without either the initial slaap of de finale quit. ik deed ( echo 'flush_all' ; sleep 2 ) | telnet myhost.fqdn.com 11211 - Joshua Huber


In plaats van te wachten op time-outs, kunt u het commando onmiddellijk uitvoeren door het te volgen flush_all  met de quit commando:

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

Als u dat niet hebt nc:

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

Hoewel deze methode geen uitvoer produceert, kunt u controleren of deze werkt door deze te controleren stats om dat te zien cmd_flush nam toe.


2
2018-06-20 13:52





in het geval dat u een socket gebruikt om verbinding te maken met memcached is de syntaxis dat

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


0
2018-01-12 11:17