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

Qual è la strategia migliore per sincronizzare i dati Redis su MySQL?

Non devi hackerare nulla;)

Non sono del tutto sicuro del motivo per cui hai bisogno dei dati su MySQL. Se lo sapessi, forse ci sarebbe una risposta più adatta. In ogni caso, come risposta generica puoi utilizzare le notifiche dello spazio delle chiavi redis

Puoi iscriverti ai comandi HSET, HMSET, HDEL e DEL sulle tue chiavi, in modo da ricevere una notifica ogni volta che una chiave viene eliminata o un valore hash viene impostato o rimosso.

Nota se perdi una notifica avresti un'incoerenza. Quindi ogni tanto potresti semplicemente usare il comando SCAN per esaminare tutte le tue chiavi e controllare su mysql se devono essere aggiornate.

Un'altra strategia potrebbe essere il mantenimento di due strutture separate. Uno sarebbe l'hash con i valori e l'altro sarebbe uno ZSET di tutti i valori ordinati per timestamp di aggiornamento. Il modo migliore per mantenere aggiornate entrambe le strutture sarebbe scrivere due o tre script lua (inserisci/aggiorna ed elimina) che operano sull'hash e sullo zset in modo atomico.

Quindi puoi semplicemente interrogare periodicamente lo ZSET per gli elementi con un timestamp maggiore dell'ultima operazione di sincronizzazione, ottenere tutte le chiavi che sono state aggiornate (includerebbe le chiavi cancellate, a meno che tu non voglia mantenere un secondo ZSET esclusivamente per quelle) e quindi semplicemente recupera tutti gli elementi per chiave e sincronizza con mysql.

Spero che funzioni per te!