sql >> Database >  >> NoSQL >> Redis

De snellere methode om redis-gegevens naar MySQL te verplaatsen

Is hun een andere manier om big data van Redis naar MySQL te dumpen?

Redis heeft de mogelijkheid (met behulp van bgsave) om op een niet-blokkerende en consistente manier een dump van de gegevens te genereren.

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

Je zou het bekende pakket van Sripathi Krishnan kunnen gebruiken om een ​​redis dump-bestand (RDB) in Python te ontleden en de MySQL-instantie offline te vullen. Of u kunt de Redis-dump converteren naar JSON-indeling en scripts schrijven in elke taal die u in MySQL wilt vullen.

Deze oplossing is alleen interessant als u de volledige gegevens van de Redis-instantie naar MySQL wilt kopiëren.

Heeft Redis een triggersysteem dat ik kan gebruiken om het crons-achtige wachtrijsysteem te vermijden?

Redis heeft geen triggerconcept, maar niets verhindert je om gebeurtenissen in Redis-wachtrijen te plaatsen telkens wanneer iets naar MySQL moet worden gekopieerd. Bijvoorbeeld, in plaats van:

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

je zou kunnen uitvoeren:

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

Het MULTI/EXEC-blok maakt het atomair en consistent. Dan hoef je alleen maar een kleine daemon te schrijven die wacht op items van de cart_to_mysql-wachtrij (met behulp van BLPOP-commando's). Voor elk item uit de wachtrij moet de daemon de relevante gegevens ophalen uit Redis en de MySQL-instantie vullen.

Redis slagen er niet in om gegevens in het bestand op te slaan, dus is het mogelijk om die gegevens rechtstreeks in de MySQL-database op te slaan?

Ik weet niet zeker of ik de vraag hier begrijp. Maar als u de bovenstaande oplossing gebruikt, zal de latentie tussen Redis-updates en MySQL-updates vrij beperkt zijn. Dus als Redis faalt, ben je alleen de allerlaatste bewerkingen kwijt (in tegenstelling tot een oplossing op basis van cronjobs). Het is natuurlijk niet mogelijk om 100% consistentie te hebben in de verspreiding van gegevens.




  1. Hoe redis.conf opslaan en afsluiten?

  2. Paginering implementeren in mongodb

  3. REST API's bouwen met EVE

  4. Geneste structuren opslaan met mgo