Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Was ist die beste Strategie, um Redis-Daten mit MySQL zu synchronisieren?

Du musst nichts hacken;)

Ich bin mir nicht ganz sicher, warum Sie die Daten auf mysql benötigen. Wenn ich das wüsste, gäbe es vielleicht eine passendere Antwort. In jedem Fall können Sie als allgemeine Antwort Redis-Schlüsselraumbenachrichtigungen verwenden

Sie könnten die Befehle HSET, HMSET, HDEL und DEL auf Ihren Schlüsseln abonnieren, sodass Sie jedes Mal eine Benachrichtigung erhalten, wenn ein Schlüssel gelöscht oder ein Hashwert gesetzt oder entfernt wird.

Beachten Sie, dass Sie eine Inkonsistenz haben, wenn Sie eine Benachrichtigung verpassen. Von Zeit zu Zeit könnten Sie also einfach den SCAN-Befehl verwenden, um alle Ihre Schlüssel durchzugehen und in mysql zu überprüfen, ob sie aktualisiert werden müssen.

Eine andere Strategie könnte darin bestehen, zwei getrennte Strukturen aufrechtzuerhalten. Einer wäre der Hash mit den Werten und der andere wäre ein ZSET aller Werte, sortiert nach Zeitstempel der Aktualisierung. Der beste Weg, beide Strukturen auf dem neuesten Stand zu halten, wäre, zwei oder drei Lua-Skripte (insert/update und delete) zu schreiben, die auf dem Hash und dem zset atomar arbeiten würden.

Dann können Sie die ZSET einfach regelmäßig nach den Elementen mit einem Zeitstempel abfragen, der höher ist als Ihr letzter Synchronisierungsvorgang, alle aktualisierten Schlüssel abrufen (es würde gelöschte Schlüssel enthalten, es sei denn, Sie möchten eine zweite ZSET ausschließlich für diese behalten) und dann nur Rufen Sie alle Elemente per Schlüssel ab und synchronisieren Sie sie mit mysql.

Hoffe, es wird für Sie funktionieren!