Ist Redis einen dauerhaften Datenspeicher?
Frage
Mit dem „dauerhaften“ Ich meine, kann der Server jederzeit abstürzen, und solange die Scheibe bleibt in Takt, gehen keine Daten verloren (siehe ACID ). Scheint, wie das ist, was Journaling-Modus für ist, aber wenn Sie Journaling aktivieren, nicht die Niederlage den Zweck auf im Speicher befindlichen Daten zum Betrieb? Leseoperationen möglicherweise nicht von Journaling betroffen sein, aber es scheint, wie Sie Ihre Schreibleistung töten Journaling würde.
Lösung
Redis ist nicht in der Regel im Einsatz als "dauerhaften" Datenspeicher (im Sinne des "D" in ACID.), Auch mit Journaling. Die meisten Anwendungsfälle absichtlich ein wenig Haltbarkeit im Gegenzug opfern für die Geschwindigkeit.
Doch der „append nur Datei“ Speichermodus kann optional in einer dauerhaften Weise zu arbeiten, so konfiguriert werden, auf Kosten der Leistung. Es wird zahlen müssen für einen fsync () bei jeder Änderung. Um dies zu konfigurieren, stellen Sie diese beiden Optionen in der Conf-Datei:
appendonly yes
appendfsync always
Aus der Dokumentation: Wie haltbar ist die hänge nur Datei?
Überprüfen Sie redis.conf, können Sie konfigurieren wie oft Redis wird Fsync () Daten auf der Festplatte. Es gibt drei Optionen:
- Fsync () jedes Mal, wenn ein neuer Befehl ist zum Anfügen Protokolldatei angehängt. Sehr sehr langsam, sehr sicher.
- Fsync () einmal jede Sekunde. Schnell genug, und Sie können 1 Sekunde von Daten verlieren, wenn es eine ist Katastrophe.
- Nie fsync (), nur setzen Sie Ihre Daten in den Händen des Betriebs System. Je schneller und unsafer Methode.
(Beachten Sie, dass die Standardeinstellung für appendfsync in der Konfigurationsdatei Versand mit Redis post-2.0.0 ist everysec
und nicht always
.)