Wir haben in diversen Projekten einen memcached für das Zwischenspeichern von häufig auftretenden Datenbank-Abfragen im einsatz. In einigen Fällen ändern sich die Grunddaten der Server zweimal am Tag. Damit wir jetzt keine alten Daten mehr ausliefeern, mussd der memcached natürlich geleert werden.

Dafür hatte ich ursprünglich ein einfaches cronscript geschrieben mit folgendem Inhalt:

echo flush_all >/dev/tcp/127.0.0.1/11211

Nun hat sich dies auf einem anderen (älteren) Server als nicht brauchbar erwiesen, da hier kein /dec/tcp existiert. Die alternative über netcat mit

echo "flush_all" | nc localhost 11211 

Dies hat aber das Problem, das der Befehl nicht korrekt terminiert, da kein quit gesendet wird. Hier habe ich auf serverfault den Vorschlag gefunden, das quit gleich mitzusenden über

printf "flush_all\nquit\n" | nc -q -1 127.1 11211

Auch war hier ein Hinweis auf die memcachedtools zu finden. In dieser Sammlung befindet sich unter anderem das tool memcflush, welches genau das macht, was ich möchte. Dadurch ist mein cronjob jetzt ganz einfach auf

memcflush --servers=localhost:11211

geschrumpft und durch die Namensgebung des Tools sieht man auch gleich was hier passiert. schöne Sache.

Next Post Previous Post