Ho un'app Web che utilizza centos, php 5.6, laravel 4.2, mariadb e redis. Ho un modello che con le relazioni one-to-one e one-to-many tocca 12 tabelle. Ho un'interfaccia utente che quando un utente modifica un valore, invio la modifica al server per eseguire calcoli che possono influire su numerose tabelle. Mentre l'utente sta modificando l'oggetto, tengo il modello in redis quindi non sto toccando il database con ogni calcolo. Per assicurarmi di mantenere il mio oggetto nel database, ho uno scheduler che controlla i redis per gli oggetti modificati, quindi aggiorna il database.
-
L'utente inizia la modifica dell'oggetto nell'interfaccia utente, carica dal database e posta in redis.
-
L'utente apporta le modifiche (sull'evento di messa a fuoco persa), le modifiche inviate al server, carica l'oggetto da redis, aggiorna + calcoli, aggiorna i redis, restituisce l'oggetto all'interfaccia utente.
-
Sul server, in background, utilizzando uno scheduler, controlla gli oggetti modificati, recupera da redis, aggiorna il database.
Domande:
1. Esiste un modo migliore per mantenere i dati da redis a mariadb che l'utente non deve attendere.
- C'è un buon modo per monitorare lo scheduler? Se il mio programma di pianificazione si arresta, non lo noterò in modo tempestivo. La mia più grande preoccupazione è che lo scheduler si fermi e rischio di perdere le modifiche dell'utente.
Importante:
1. I miei calcoli devono essere fatti sul server. Questo non può essere cambiato.
2. Non riesco a caricare da mariadb e scrivere in db con ogni modifica, è solo troppo lento.