Redis
 sql >> Base de données >  >> NoSQL >> Redis

Quelle est la meilleure stratégie pour synchroniser les données Redis avec MySQL ?

Vous n'avez pas besoin de pirater quoi que ce soit;)

Je ne suis pas tout à fait sûr de la raison pour laquelle vous avez besoin des données sur mysql. Si je le savais, il y aurait peut-être une réponse plus appropriée. Dans tous les cas, comme réponse générique, vous pouvez utiliser les notifications d'espace de clés Redis

Vous pouvez vous abonner aux commandes HSET, HMSET, HDEL et DEL sur vos clés, afin de recevoir une notification chaque fois qu'une clé est supprimée ou qu'une valeur de hachage est définie ou supprimée.

Notez que si vous manquez une notification, vous auriez une incohérence. Ainsi, de temps en temps, vous pouvez simplement utiliser la commande SCAN pour parcourir toutes vos clés et vérifier sur mysql si elles doivent être mises à jour.

Une autre stratégie pourrait être de maintenir deux structures distinctes. L'un serait le hachage avec les valeurs, et l'autre serait un ZSET de toutes les valeurs triées par horodatage de mise à jour. La meilleure façon de maintenir les deux structures à jour serait d'écrire deux ou trois scripts lua (insertion/mise à jour et suppression) qui fonctionneraient sur le hachage et le zset de manière atomique.

Ensuite, vous pouvez simplement interroger périodiquement le ZSET pour les éléments avec un horodatage supérieur à votre dernière opération de synchronisation, obtenir toutes les clés qui ont été mises à jour (cela inclurait les clés supprimées, sauf si vous souhaitez conserver un deuxième ZSET exclusivement pour celles-ci) et puis juste récupérer tous les éléments par clé et synchroniser avec mysql.

J'espère que cela fonctionnera pour vous !