es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se asegura que un usuario no está leyendo datos obsoletos (que aún no están sincronizados) de un esclavo Redis de solo lectura?

Estoy aprendiendo sobre la replicación de Redis y entendí los siguientes hechos:
1. Por defecto, las réplicas son de solo lectura.
2. Todas las escrituras ocurren en el maestro.
3. El maestro escribe los cambios en el búfer interno y luego los envía al esclavo para sincronizarlos.
4. El esclavo recibe la información del búfer y la escribe en su memoria.

Tengo una duda/curiosidad aquí:

Supongamos que el maestro tiene una clave:valor: “nombre:rishi” y que esta clave:valor está sincronizada en el esclavo. Luego, un usuario actualiza la clave “nombre” con un nuevo valor “nombre:coder” y el maestro pone los datos en el búfer interno para sincronizarlos con el/los esclavo/s.

¿Qué sucede si llega una consulta de lectura de Redis a la clave “nombre” antes de que se actualicen los esclavos? ¿Hay alguna posibilidad de que se lea información obsoleta del esclavo/s?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, existe la posibilidad de que se pueda leer datos obsoletos de los esclavos en este escenario. Esto se debe a que el proceso de replicación en Redis es asíncrono, lo que significa que el esclavo puede no haber recibido las actualizaciones aún cuando se ejecuta una consulta de lectura. Para minimizar las posibilidades de que esto suceda, se puede utilizar el comando WAIT de Redis para esperar a que un número especificado de esclavos estén sincronizados con el maestro antes de ejecutar consultas de lectura. Además, se puede configurar Redis para promocionar automáticamente un esclavo a maestro en caso de que el maestro falle, para garantizar una alta disponibilidad y minimizar el tiempo de inactividad.

Comments are closed.