Fondamentalmente sono disponibili due tipi principali: snapshot asincroni e fsync()
. Si chiamano rispettivamente RDB e AOF. Maggiori informazioni sulle modalità di persistenza sulla pagina ufficiale .
La gestione del segnale del processo demonizzato si sincronizza con il disco, ad esempio, quando riceve un SIGTERM, quindi i dati saranno ancora lì dopo un riavvio. Penso che il demone o il sistema operativo debba bloccarsi prima di vedere un danneggiamento dell'integrità, anche con le impostazioni predefinite (istantanee RDB).
L'impostazione AOF utilizza un file di solo 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 prevede lo svuotamento una volta al secondo (IIRC) ma può essere impostato per bloccare e scrivere su ogni comando.
L'uso sia delle istantanee che del registro incrementale sembra offrire sia un approccio a lungo termine da non preoccuparsi se mi perdo qualche secondo di dati , sia un registro incrementale più sicuro, ma costoso. Redis supporta il clustering out of the box, quindi sembra che anche la replica possa essere eseguita.
Sto utilizzando personalmente l'impostazione RDB predefinita e salvo le istantanee su FTP remoto. Non ho ancora visto un errore che abbia causato una perdita di dati. Molto probabilmente un guasto hardware acuto o interruzioni di corrente sarebbe, ma sono ospitato su un VPS. Scarse possibilità che ciò accada :)