Ich bin dabei, eine Java-Anwendung nach .NET zu portieren, die Anwendung benutzt EhCache derzeit ziemlich stark und besteht darauf, dass sie starke Konsistenz unterstützen will (http://ehcache.org/documentation/get-started/consistency-options). .
Ich möchte Redis anstelle von EhCache verwenden, aber Redis unterstützt starke Konsistenz oder unterstützt nur mögliche Konsistenz?
Ich habe von einem Redis-Cluster gesprochen, aber ich denke, das ist noch ein bisschen weit weg von der Veröffentlichung.
Oder sehe ich das falsch? Wenn die Redis-Instanz insgesamt auf einem anderen Server saß und zwei Frontend-Server bediente, wie groß konnte es sein, bevor wir uns eine Master / Slave-Affäre anschauen mussten?
Eine einzelne Instanz von Redis ist konsistent. Es gibt Optionen für die Konsistenz über viele Instanzen hinweg. @antirez (Redis-Entwickler) schrieb kürzlich einen Blog-Post, Redis-Datenmodell und eventuelle Konsistenz und empfahl Twemproxy für das Sharding von Redis, was Ihnen Konsistenz über viele Instanzen hinweg geben würde.
Ich kenne EhCache nicht, also kann ich nicht sagen, ob Redis ein geeigneter Ersatz ist. Ein potentielles Problem (Portierung auf .NET) mit Twemproxy ist, dass es anscheinend nur unter Linux läuft.
Wie groß kann eine einzelne Redis-Instanz werden? Hängt davon ab, wie viel RAM du hast. Wie schnell wird es so groß werden? Hängt davon ab, wie Ihre Daten aussehen.
Nach meiner Erfahrung speichert Redis Daten sehr effizient. Eine App, die ich habe, enthält Informationen für 200k Benutzer, 20k Artikel, alle Beziehungen zwischen Objekten, wöchentliche Ranglisten, Statistiken usw. (330k Schlüssel insgesamt) in 400mb RAM.
Redis ist einfach zu bedienen und macht Spaß. Probieren Sie es aus und sehen Sie, ob es Ihren Bedürfnissen entspricht. Wenn Sie sich entscheiden, es zu verwenden und eines Tages vielleicht shard möchten, teilen Sie Ihre Daten von Anfang an.
Redis ist nicht von Anfang an stark konsistent. Sie müssen wahrscheinlich Lösungen von Drittanbietern anwenden, um sie konsistent zu machen. Hier ist ein Zitat aus der Dokumentation:
Schreiben Sie Sicherheit Redis Cluster verwendet die asynchrone Replikation zwischen Knoten und das letzte Failover gewinnt die implizite Zusammenführungsfunktion. Dies bedeutet, dass der zuletzt gewählte Hauptdatensatz letztendlich alle anderen Replikate ersetzt. Es gibt immer ein Zeitfenster, in dem es möglich ist, Schreibvorgänge während Partitionen zu verlieren. Diese Fenster unterscheiden sich jedoch sehr im Falle eines Clients, der mit den meisten Mastern verbunden ist, und eines Clients, der mit einer Minderheit von Mastern verbunden ist.
Normalerweise müssen Sie eine synchrone Replikation durchführen, um eine starke Konsistenz in verteilten verteilten Systemen zu erreichen.
Tags und Links redis database-replication replication