Da Memcache alles im RAM speichert, geht der Speicher verloren, wenn ein Knoten nach einem Ausfall wiederhergestellt wird. Bietet Memcache einen Hook, um nach dem Start ein Skript aufzurufen? Wir möchten, dass dieses Skript „etwas“ tut, entweder einen externen Dienst aufruft usw., um den Cache neu zu laden. Wir verwenden Ubuntu 11.
Antwort1
Da Sie Ubuntu verwenden, können Sie Memcache-Aufgaben in eine Upstart-Konfiguration einbinden.
Der "Hook" zum Aufrufen eines Skripts nach memcached
dem Start wäre in derpost-start
Abschnitt der Upstart-Konfiguration.
Ihre Konfiguration sieht dann ungefähr so aus:
# memcached - in-memory cache
#
description "memcached"
start on (local-filesystems and started networking)
stop on runlevel [!2345]
respawn
pre-start script
test -x /usr/bin/memcached || { stop; exit 0; }
end script
exec /usr/bin/memcached -v -m 64 -p 11211 -u nobody -l 127.0.0.1
post-start script
/usr/local/bin/populate-memcache.sh
end script
Bitte überprüfen Sie die Upstart-Dokumentation usw. Sie müssen natürlich das Memcached-Startskript aus /etc/init.d entfernen.
Antwort2
Memcache ist ein nicht persistenter Cache (die Grundidee besteht darin, Datenanbieter wie MySQL zu ergänzen und die am häufigsten verwendeten Daten zwischenzuspeichern, nicht sie vollständig zu ersetzen). Ihre Forderung kann daher nicht erfüllt werden.
Der Streit um 'persistenten Memcache' ist an sich schon eine Büchse der Pandora, denneinige Leutebehaupten, dass wenn Sie einen „persistenten Memcache“ erstellen, es sich nicht mehr um einen „Cache“ handelt.
Weitere Einzelheiten (viel mehr, als ich hier angeben kann) finden Sie unterdieser StackOverflow-Beitrag.