Actualmente estoy usando MySql para almacenar mis sesiones. Funciona muy bien, pero es un poco lento.
Me han pedido que use Redis, pero me pregunto si es una buena idea porque escuché que Redis retrasa las operaciones de escritura. Tengo un poco de miedo porque las sesiones deben ser en tiempo real.
¿Alguien ha experimentado tales problemas?
Respuestas:
Redis es perfecto para almacenar sesiones. Todas las operaciones se realizan en la memoria, por lo que las lecturas y escrituras serán rápidas.
El segundo aspecto es la persistencia del estado de la sesión. Redis le brinda mucha flexibilidad en cuanto a cómo desea conservar el estado de la sesión en su disco duro. Puede visitar http://redis.io/topics/persistence para obtener más información, pero en un nivel alto, estas son sus opciones:
appendfsync always
su archivo de configuración. Con esto, Redis garantiza que cualquier operación de escritura se guarde en el disco. La desventaja es que las operaciones de escritura serán más lentas.appendfsync everysec
. Esto dará un gran rendimiento con garantías de datos razonables.fuente
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 :)
fuente
Esta pregunta se trata realmente de sesiones en tiempo real, y parece haber surgido en parte debido a un malentendido de la frase 'operaciones de escritura retrasadas'. Si bien los detalles finalmente se descubrieron en los comentarios, solo quería dejarlo súper claro. ..
No tendrás problemas para implementar sesiones en tiempo real.
Redis es un almacén de clave-valor en memoria con persistencia opcional en disco. "Operaciones de escritura retrasada" se refiere a escrituras en disco , no a la base de datos en general, que existe en la memoria. Si establece un par clave / valor, puede OBTENERlo inmediatamente (es decir, en tiempo real). La política que seleccione con respecto a la persistencia (cuánto demora las escrituras) determinará el límite superior de la cantidad de datos que se podrían perder en una falla.
fuente