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.