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

¿Cuál es la mejor estrategia para sincronizar datos de Redis con MySQL?

No necesitas hackear nada;)

No estoy del todo seguro de por qué necesita los datos en mysql. Si lo supiera, tal vez habría una respuesta más adecuada. En cualquier caso, como respuesta genérica puede usar notificaciones de espacio de teclas redis

Puede suscribirse a los comandos HSET, HMSET, HDEL y DEL en sus claves, por lo que recibirá una notificación cada vez que se elimine una clave o se establezca o elimine un valor hash.

Tenga en cuenta que si pierde alguna notificación, tendría una inconsistencia. Entonces, de vez en cuando, puede usar el comando ESCANEAR para revisar todas sus claves y verificar en mysql si es necesario actualizarlas.

Otra estrategia podría ser mantener dos estructuras separadas. Uno sería el hash con los valores y el otro sería un ZSET de todos los valores ordenados por marca de tiempo de actualización. La mejor manera de mantener ambas estructuras actualizadas sería escribir dos o tres scripts lua (insertar/actualizar y eliminar) que operarían en el hash y el zset de forma atómica.

Luego, puede consultar periódicamente el ZSET para los elementos con una marca de tiempo más alta que su última operación de sincronización, obtener todas las claves que se actualizaron (incluirían claves eliminadas, a menos que desee mantener un segundo ZSET exclusivamente para esos) y luego simplemente recuperar todos los elementos por clave y sincronizar con mysql.

¡Espero que te funcione!