sql >> Base de Datos >  >> NoSQL >> Redis

El método más rápido para mover datos de redis a MySQL

¿Hay alguna otra forma de volcar big data de Redis a MySQL?

Redis tiene la posibilidad (utilizando bgsave) de generar un volcado de los datos de forma coherente y sin bloqueos.

https://github.com/sripathikrishnan/redis-rdb-tools

Podría usar el conocido paquete de Sripathi Krishnan para analizar un archivo de volcado de Redis (RDB) en Python y completar la instancia de MySQL sin conexión. O puede convertir el volcado de Redis a formato JSON y escribir secuencias de comandos en cualquier idioma que desee para completar MySQL.

Esta solución solo es interesante si desea copiar los datos completos de la instancia de Redis en MySQL.

¿Tiene Redis algún sistema de activación que pueda usar para evitar los crons como el sistema de cola?

Redis no tiene un concepto de activación, pero nada le impide publicar eventos en las colas de Redis cada vez que se debe copiar algo en MySQL. Por ejemplo, en lugar de:

# Add an item to a user shopping cart
RPUSH user:<id>:cart <item>

podrías ejecutar:

# Add an item to a user shopping cart
MULTI
RPUSH user:<id>:cart <item>
RPUSH cart_to_mysql <id>:<item>
EXEC

El bloque MULTI/EXEC lo hace atómico y consistente. Luego, solo tiene que escribir un pequeño demonio esperando en los elementos de la cola cart_to_mysql (usando los comandos BLPOP). Para cada elemento eliminado de la cola, el demonio debe obtener los datos relevantes de Redis y completar la instancia de MySQL.

Redis falla en nuestra tienda de datos en el archivo, ¿es posible almacenar esos datos directamente en la base de datos MySQL?

No estoy seguro de entender la pregunta aquí. Pero si usa la solución anterior, la latencia entre las actualizaciones de Redis y las actualizaciones de MySQL será bastante limitada. Entonces, si Redis falla, solo perderá las últimas operaciones (al contrario de una solución basada en trabajos cron). Por supuesto, no es posible tener una consistencia del 100 % en la propagación de datos.