2010-03-15 11 views
36

Con "durable" me refiero a que el servidor puede bloquearse en cualquier momento, y mientras el disco permanezca intacto, no se pierden datos (consulte ACID). Parece que para eso es el modo diario, pero si habilita el diario, ¿no es eso un inconveniente el propósito de operar con datos en memoria? Las operaciones de lectura pueden no verse afectadas por el registro en diario, pero parece que el registro en diario mataría su rendimiento de escritura.¿Redis es un almacén de datos duradero?

+5

No se puede tener las dos cosas. O bien algunos datos están en el limbo, o tiene que esperar a que se escriban todos los datos en el disco. –

+5

Es exactamente por eso que estoy haciendo esta pregunta. – allyourcode

Respuesta

49

Redis no es generalmente implementado como un almacén de datos "duradero" (en el sentido de "D" en ACID.), Incluso con diario. La mayoría de los casos de uso sacrifican intencionalmente un poco de durabilidad a cambio de velocidad.

Sin embargo, el modo de almacenamiento "anexar solo archivo" se puede configurar opcionalmente para que funcione de manera duradera, a costa del rendimiento. Tendrá que pagar por un fsync() en cada modificación. Para configurar esto, establecer estas dos opciones en el archivo .conf:

appendonly yes 
appendfsync always 

A partir de los documentos: How durable is the append only file?

Comprobar redis.conf, puede configurar cuántas veces se Redis fsync() de datos en el disco. Hay tres opciones:

  • FSYNC() cada vez que un nuevo comando es anexa al archivo de registro de datos anexados. Muy muy lento, muy seguro.
  • Fsync() una vez cada segundo. Lo suficientemente rápido, y puede perder 1 segundo de datos si hay un desastre .
  • Nunca fsync(), simplemente ponga sus datos en las manos del sistema operativo . El método más rápido e inseguro.

(Tenga en cuenta que el valor predeterminado para appendfsync en el archivo de configuración con el envío Redis post-2.0.0 es everysec, y no always.)

+3

Bueno saberlo. ¿Puedes proporcionar un enlace para apoyar lo que estás diciendo? – allyourcode

+1

@FrankFarmer He editado la respuesta un poco, porque tenía información obsoleta sobre la configuración predeterminada y también "enterré el titular" un poco al marcar con "No". Siéntase libre de mejorar mis mejoras. :-) – HostileFork

+1

@HostileFork, dados los cambios sustanciales que ha realizado, creo que será mejor que envíe su propia respuesta. Ha pasado el tiempo suficiente para que una nueva perspectiva sea ciertamente bienvenida –

Cuestiones relacionadas