Finns de något annat sätt att dumpa big data från Redis till MySQL?
Redis har möjligheten (med hjälp av bgsave) att generera en dump av data på ett icke-blockerande och konsekvent sätt.
https://github.com/sripathikrishnan/redis-rdb-tools
Du kan använda Sripathi Krishnans välkända paket för att analysera en redis-dumpfil (RDB) i Python och fylla i MySQL-instansen offline. Eller så kan du konvertera Redis-dumpen till JSON-format och skriva skript på vilket språk du vill ska fylla i MySQL.
Den här lösningen är bara intressant om du vill kopiera hela data från Redis-instansen till MySQL.
Har Redis något triggersystem som jag kan använda för att undvika crons som kösystem?
Redis har inget triggerkoncept, men ingenting hindrar dig från att lägga upp händelser i Redis-köer varje gång något måste kopieras till MySQL. Till exempel istället för:
# Add an item to a user shopping cart
RPUSH user:<id>:cart <item>
du kan köra:
# Add an item to a user shopping cart
MULTI
RPUSH user:<id>:cart <item>
RPUSH cart_to_mysql <id>:<item>
EXEC
MULTI/EXEC-blocket gör det atomärt och konsekvent. Sedan behöver du bara skriva en liten demon som väntar på objekt i cart_to_mysql-kön (med BLPOP-kommandon). För varje ur kö måste demonen hämta relevant data från Redis och fylla i MySQL-instansen.
Redis misslyckas med vår lagra data i fil så är det möjligt att lagra dessa data direkt i MySQL databas?
Jag är inte säker på att jag förstår frågan här. Men om du använder ovanstående lösning kommer latensen mellan Redis-uppdateringar och MySQL-uppdateringar att vara ganska begränsad. Så om Redis misslyckas kommer du bara att förlora de allra sista operationerna (i motsats till en lösning baserad på cron-jobb). Det är naturligtvis inte möjligt att ha 100% konsistens i spridningen av data dock.