Redis
 sql >> Database >  >> NoSQL >> Redis

Il metodo più veloce per spostare i dati redis su MySQL

C'è un altro modo per scaricare i big data da Redis a MySQL?

Redis ha la possibilità (usando bgsave) di generare un dump dei dati in modo non bloccante e coerente.

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

È possibile utilizzare il noto pacchetto di Sripathi Krishnan per analizzare un file di dump redis (RDB) in Python e popolare l'istanza MySQL offline. Oppure puoi convertire il dump Redis in formato JSON e scrivere script in qualsiasi lingua tu voglia popolare MySQL.

Questa soluzione è interessante solo se desideri copiare i dati completi dell'istanza Redis in MySQL.

Redis ha un sistema di trigger che posso utilizzare per evitare i cron come il sistema di code?

Redis non ha un concetto di trigger, ma nulla ti impedisce di pubblicare eventi nelle code Redis ogni volta che qualcosa deve essere copiato su MySQL. Ad esempio, invece di:

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

potresti eseguire:

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

Il blocco MULTI/EXEC lo rende atomico e coerente. Quindi devi solo scrivere un piccolo demone in attesa sugli elementi della coda cart_to_mysql (usando i comandi BLPOP). Per ogni elemento rimosso dalla coda, il demone deve recuperare i dati rilevanti da Redis e popolare l'istanza MySQL.

Redis non riesce a memorizzare i dati nel file, quindi è possibile archiviare tali dati direttamente nel database MySQL?

Non sono sicuro di aver capito la domanda qui. Ma se si utilizza la soluzione di cui sopra, la latenza tra gli aggiornamenti Redis e gli aggiornamenti MySQL sarà piuttosto limitata. Quindi, se Redis fallisce, perderai solo le ultime operazioni (contrariamente a una soluzione basata su cron job). Ovviamente non è possibile avere una coerenza del 100% nella propagazione dei dati.