In meinem aktuellen Projekt habe ich PostgreSQL als meine Master-DB, und Redis als eine Art Slave, zB wenn ein Benutzer einen anderen als Freund hinzufügt, zuerst wird die Beziehung in PostgreSQL gespeichert und dann eine Freundesliste in Redis bleibe auf dem Laufenden. Wenn die Freundesliste eines Benutzers angefordert wird, wird sie aus Redis anstelle von PostgreSQL herausgezogen.Sollte ich Redis für Datenintegrität vertrauen?
Die Frage ist: wenn ich die Freundesliste in Redis aktualisiere, sollte ich eine neue Kopie von PostgreSQL bekommen, und die alte Liste in Redis durch die neue ersetzen oder sollte ich die alte Liste behalten und einfach die Benutzerkennung in SADD Die Liste? Letzteres ist natürlich am besten für die Leistung, aber ersteres macht die Datenintegrität besser? Und wenn etwas wie Sellerie verwendet wird, ist die zweite Methode das Risiko wert?
+1 - stimme zu ... und mache weiter darauf aufmerksam/bemerke, dass die Entscheidung, in diesem Szenario den Slave anstelle des Masters zu verwenden, seltsam erscheint. Wenn die Skalierbarkeit die Konsistenzanforderungen in diesem Szenario übertrifft, warum sollte redis nicht als autorisierende Quelle verwendet werden (vertikal geschaffte Schlüsselbereiche einrichten, wenn ein einzelner Server die Last nicht verarbeiten kann) und dann nach cassandra oder einem anderen horizontal skalierbaren Speicher replizieren? – codemonkey
@Sripathi, ich bin mir des Problems bewusst, das Sie erwähnten, egal mit welcher Methode ich wähle, Datenkorruption wird mit derselben Rate auftreten, aber ist dies der einzige Ort, an dem Korruption auftritt? Da Redis nicht ACID-konform ist, würde ich gerne wissen, wie oft ich seine Daten vom Master rekonstruieren sollte, oder ist es praktisch, es als ACID zu behandeln (in diesem speziellen Szenario natürlich)? – Jiaji
@codemonkey Tatsächlich brauche ich Konsistenz, also wähle ich Postgres als Master, da Redis-Daten daraus rekonstruiert werden können, theoretisch können die an die Benutzer gesendeten Daten "fast" konsistent gemacht werden. – Jiaji