Ich möchte MemCached für eine Webanwendung verwenden, die ich gerade entwickle, und nachdem ich MemCached in den letzten Tagen untersucht habe, bin ich auf eine Frage gestoßen, auf die ich keine Antwort finden konnte.
Wie verknüpfen Sie Memcached-Server miteinander oder wie replizieren Sie Daten zwischen MemCached-Servern?
Zusätzlich: Wird diese Funktionalität von den Servern oder den Clients gesteuert und wie?
Ich habe BeitMemcached verwendet und darin eine Instanz von MemcacheClient erstellt und die Server für Sie festgelegt möchte genauso wie Strings verwenden.
An diesem Punkt bestimmt der Client selbst, auf welchem der Server er verschiedene Objekte hat. Sie wissen nie, in welchem Artikel Sie sich befinden.
Sehen Sie sich hier an, um zu erfahren, wie die Server den Failover handhaben .
Am einfachsten ist es, einen Mechanismus für die Wiederbefüllung zu haben. In meinem Fall speichere ich mehrere hundert Objekte in Memcache, die aus einer Datenbank stammen. Ich kann einfach wieder ansprechen und sie alle wieder zurückbringen. Immer wenn ich sie der Datenbank hinzufüge, aktualisiere oder lösche, mache ich dieselben Aufrufe an Memcache.
Wenn Sie mehrere Server einrichten, verwenden die Clientbibliotheken einen ersten Hash, um einen Speicherort für jedes Schlüssel / Datenpaar auszuwählen. das bedeutet, dass es keine Replikation gibt und dass jeder Client die gleiche Gruppe von Servern verwenden muss.
Profis:
Nachteile:
Wenn Sie die Kontrolle über den Client-Code haben, können Sie jedes Schlüssel / Datenpaar einfach zweimal auf zwei Servern speichern. Achten Sie darauf, an den gleichen Stellen zu suchen, wenn Sie von einem anderen Kunden lesen.
Außerdem kann der PHP PECL-Memcache-Client Daten auf mehreren Servern replizieren, siehe memcache.redundancy.
Es klingt, als ob Sie Caches haben möchten, die mit dem Neustart von Rechnern umgehen können, wenn das so ist ...
In vielen Fällen (vorausgesetzt, Sie schreiben nicht Facebook) ist ein RDMS schnell genug für das Caching. Erstellen Sie einfach eine Tabelle mit einem Schlüssel und einer Blob-Spalte. Wenn der RDBS-Server über genügend RAM verfügt, befinden sich alle Daten im RAM und werden nur auf dem Datenträger gespeichert, um die Wiederherstellung zu ermöglichen.
Denken Sie daran, dass dies ein separater Server von Ihrem Hauptdatenbankserver sein könnte.
Wenn Sie etwas ausgefallener sein und einen High-End-RDMS verwenden möchten, können Sie möglicherweise Änderungsbenachrichtigungen für die Abfragen einrichten, mit denen die "zwischengespeicherten Daten" erstellt werden, die veraltete Zeilen löschen der Cache.
Jemand, den Sie Trigger einrichten können, um ungültige Zeilen aus dem Cache zu löschen, aber das kann sehr schnell sehr komplex sein.
Memcached bietet keine Replikationseigenschaft. Dazu müssen Sie den Server zur Memcached-Client-Server-Liste hinzufügen und dann die DB für die Daten treffen, die auf diesem bestimmten Server gespeichert werden sollen.
Tags und Links memcached