Fondamentalmente sono disponibili due tipi principali: snapshot async e fsync()
. Si chiamano rispettivamente RDB e AOF. Altro su persistence modes on the official page.
La gestione del segnale del processo daemonizzato si sincronizza su disco quando riceve un SIGTERM per esempio, quindi i dati saranno ancora lì dopo un riavvio. Penso che il demone o il sistema operativo debba bloccarsi prima che si verifichi un danneggiamento dell'integrità, anche con le impostazioni predefinite (snapshot RDB).
L'impostazione AOF utilizza un file di sola aggiunta che registra i comandi ricevuti dal server e ricrea il database da zero all'avvio a freddo, dal file salvato. Il criterio di sincronizzazione del disco predefinito è eseguire il flush una volta al secondo (IIRC), ma può essere impostato per bloccare e scrivere su ogni comando.
Usando entrambe le istantanee e il registro incrementale sembra offrire sia un lungo periodo non fare-mente-se-I-miss-a-pochi-secondi-dei-dati approccio con un più sicuro, ma costosa registro incrementale. Redis supporta il clustering out of the box, quindi anche la replica può essere eseguita.
Sto utilizzando l'impostazione predefinita di RDB e salvando le istantanee su FTP remoto. Non ho ancora visto un errore che ha causato una perdita di dati. Molto probabilmente un guasto hardware acuto o interruzioni di corrente, ma sono ospitato su un VPS. Sottile possibilità che ciò accada :)
fonte
2013-05-01 20:44:24
Poiché Redis dice che ha una durata opzionale, direi che è sicuro usarlo se si opta per la persistenza su HDD. Tuttavia, per i dati di sessione, li salverei sicuramente nella RAM (il che significa che non mi preoccuperei della parte di durata dell'intera esperienza). Il peggio che dovrebbe accadere nel caso in cui si perdono i dati di sessione sta facendo disconnettere gli utenti. –
sì, ma questo è parte del mio requisito, gli utenti non dovrebbero dover eseguire il login, dal momento che alcuni dati degli utenti sono persistenti attraverso la sessione mentre gli utenti non sono loggati (utenti guest). Vanno per Redis RAM ma con registrazione e/o backup abilitati. Se abbiamo perso alcune sessioni è accettabile. – Trent
Bene, se si sta utilizzando una memoria del disco rigido, che senso ha usare Redis? Probabilmente ritarda l'effettivo commit su disco per aumentare le prestazioni, la stessa cosa che MySQL potrebbe fare se configurato in quel modo. Hai pensato di spostare MySQL su un sottosistema I/O più veloce?Non è che Redis funzionerà magicamente 50 volte più velocemente sullo stesso hardware, se deve utilizzare gli stessi sottosistemi di I/O. –