Wie kann MemCached Server miteinander verbunden werden?

8

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?

    
GateKiller 09.12.2008, 12:01
quelle

6 Antworten

5

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.

    
Tristan Warner-Smith 27.02.2009, 19:50
quelle
7

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:

  • fast Null Overhead, Speicher und Bandbreite wachsen linear.
  • Server-Code ist einfach und zuverlässig gehalten.

Nachteile:

  • Jede Änderung in der Gruppe von Servern (eine geht aus oder Sie fügen eine neue hinzu) macht (fast) den gesamten Cache ungültig.
  • Sie müssen sicherstellen, dass Sie für jeden Client denselben Algorithmus verwenden.

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.

    
Javier 09.12.2008 12:16
quelle
2

Ссылка

Außerdem kann der PHP PECL-Memcache-Client Daten auf mehreren Servern replizieren, siehe memcache.redundancy.

    
Daniel Von Fange 02.03.2009 15:21
quelle
1

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.

    
Ian Ringrose 27.02.2009 10:41
quelle
0

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.

    
Anil Kumar 15.06.2012 06:39
quelle
0

Sie sollten CouchBase ernsthaft in Erwägung ziehen. Es verwendet das Memcached-Protokoll, bietet fast die gleiche Geschwindigkeit und liefert die automatische Replikation, nach der Sie suchen. Es bleibt auch auf der Festplatte, so dass Ihr Cache nie kalt wird.

    
rs_atl 15.06.2012 12:43
quelle

Tags und Links