Básicamente hay dos tipos principales disponibles: snapsnots asincrónicos y fsync()
. Se llaman RDB y AOF respectivamente. Más sobre persistence modes on the official page.
El manejo de la señal del proceso daemonizado se sincroniza con el disco cuando recibe un SIGTERM por ejemplo, por lo que los datos seguirán allí después de un reinicio. Creo que el daemon o el sistema operativo debe bloquearse 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 agregar que registra los comandos que recibe el servidor y recrea la base de datos desde cero en el arranque en frío, desde el archivo guardado. La política predeterminada de sincronización de disco es descargar una vez por segundo (IIRC) pero se puede configurar para bloquear y escribir en cada comando.
Utilizando ambas las instantáneas y el registro de incremento parece ofrecer tanto un largo plazo No te-mente-si-i-miss-a-pocos segundos de datos- con un enfoque más seguro, pero costoso registro incremental. Redis admite la agrupación fuera de la caja, por lo que la replicación también se puede hacer.
Estoy usando la configuración de RDB predeterminada y guardo las instantáneas en FTP remoto. No he visto una falla que haya causado una pérdida de datos todavía. Es muy probable que se produzcan fallas agudas de hardware o cortes de energía, pero estoy alojado en un VPS. Escasas posibilidades de que eso ocurra :)
Dado que Redis dice que tiene durabilidad opcional, entonces diría que es seguro usarlo si opta por la persistencia en la unidad de disco duro. Sin embargo, para los datos de la sesión, definitivamente los guardaría en la memoria RAM (lo que significa que no me preocuparía la durabilidad como parte de toda la prueba). Lo peor que debería suceder en caso de que pierda datos de sesión es que sus usuarios cierren la sesión. –
sí, pero esto es parte de mi requisito, los usuarios no deberían tener que volver a iniciar sesión, por cierto algunos datos de los usuarios se conservan en la sesión mientras que los usuarios no inician sesión (usuarios invitados). Buscarán Redis RAM pero con el registro y/o respaldo habilitados. Si perdimos algunas sesiones, es aceptable. – Trent
Bueno, si está utilizando un almacenamiento en disco duro, ¿de qué sirve usar Redis? Probablemente retrasa la confirmación real en el disco para aumentar el rendimiento, lo mismo que MySQL podría hacer si se configura de esa manera. ¿Consideró mover su MySQL a un subsistema de E/S más rápido?No es como si Redis mágicamente trabajara 50 veces más rápido en el mismo hardware, si tiene que usar el mismo subsistema de E/S. –