sql >> Databáze >  >> NoSQL >> Redis

Rychlejší metoda pro přesun dat redis do MySQL

Je jejich nějaký jiný způsob, jak ukládat velká data z Redis do MySQL?

Redis má možnost (pomocí bgsave) generovat výpis dat neblokujícím a konzistentním způsobem.

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

Můžete použít známý balíček Sripathi Krishnana k analýze souboru s výpisem redis (RDB) v Pythonu a naplnění instance MySQL offline. Nebo můžete převést výpis Redis do formátu JSON a psát skripty v jakémkoli jazyce, který chcete naplnit MySQL.

Toto řešení je zajímavé pouze v případě, že chcete zkopírovat kompletní data instance Redis do MySQL.

Má Redis nějaký spouštěcí systém, který mohu použít, abych se vyhnul cronům, jako je systém front?

Redis nemá žádnou koncepci spouštění, ale nic vám nebrání zveřejňovat události ve frontách Redis pokaždé, když je třeba něco zkopírovat do MySQL. Například místo:

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

můžete provést:

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

Blok MULTI/EXEC jej činí atomickým a konzistentním. Pak stačí napsat malého démona čekajícího na položky fronty cart_to_mysql (pomocí příkazů BLPOP). Pro každou vyřazenou položku musí démon načíst příslušná data z Redis a naplnit instanci MySQL.

Redis neukládá data do souboru, takže je možné tato data uložit přímo do databáze MySQL?

Nejsem si jistý, zda rozumím této otázce. Pokud však použijete výše uvedené řešení, bude latence mezi aktualizacemi Redis a aktualizacemi MySQL značně omezená. Pokud tedy Redis selže, ztratíte pouze poslední operace (na rozdíl od řešení založeného na úlohách cron). Samozřejmě není možné mít 100% konzistenci při šíření dat.




  1. Vytváření REST API pomocí EVE

  2. Mongoose limit/offset a dotaz na počet

  3. Míchání PostgreSQL a MongoDB (jako backendy Django)

  4. Jak monitorovat databázové servery pomocí ClusterControl CLI