Básicamente, hay dos tipos principales disponibles: async snapsnots y fsync()
. Se llaman RDB y AOF respectivamente. Más sobre los modos de persistencia en la página oficial .
El manejo de señales del proceso demonizado se sincroniza con el disco cuando recibe un SIGTERM, por ejemplo, por lo que los datos aún estarán allí después de un reinicio. Creo que el demonio o el sistema operativo tiene que fallar antes de que vea una corrupción de integridad, incluso con la configuración predeterminada (instantáneas RDB).
La configuración de AOF utiliza un archivo de solo adjuntar que registra los comandos que recibe el servidor y recrea la base de datos desde cero en el inicio en frío, desde el archivo guardado. La política de sincronización de disco predeterminada es vaciar una vez cada segundo (IIRC), pero se puede configurar para bloquear y escribir en cada comando.
El uso de las instantáneas y el registro incremental parece ofrecer un enfoque a largo plazo de no importar si me pierdo unos pocos segundos de datos con un registro incremental más seguro pero costoso. Redis admite la agrupación en clústeres lista para usar, por lo que parece que la replicación también se puede hacer.
Estoy usando la configuración predeterminada de RDB y estoy guardando las instantáneas en FTP remoto. Todavía no he visto una falla que haya causado una pérdida de datos. Lo más probable es que se produzcan fallas agudas de hardware o cortes de energía, pero estoy alojado en un VPS. Escasas posibilidades de que eso suceda :)