Ho un bot di telegramma che avverte ogni volta che un prezzo di un determinato asset raggiunge un determinato prezzo.
Ho la seguente tabella in un DB:
- AlertId
- ChatId
- Prezzo
- Asset
Quindi ogni risorsa avrà diversi ChatId (utenti) e ognuno di essi può avere più AlertId e AlertID è un valore autonumerico univoco.
Poiché questi dati vengono letti costantemente, ho deciso di memorizzarli nella cache usando Redis.
Ho finito con il seguente progetto Redis, ma non mi sento davvero a mio agio, sento che c'è un modo migliore di progettarlo.
Ho creato 2 set:
Asset:{asset}
- restituisce gli elenchi di ChatId che hanno avvisi su quel bene
ChatId:{chatId}
- restituisce elenchi di AlertId
e la seguente chiave che contiene il prezzo
Alerts:{alertId}
- restituisce JSON con il prezzo che attiverà l'allarme.
Per inviare l'avviso via Telegram ho bisogno del chatId, della risorsa e del prezzo, quindi per ogni aggiornamento di prezzo faccio il seguente algoritmo:
- controlla se c'è qualche elemento in
Asset:{asset}
- inserisci un ciclo for con i valori precedenti per ChatId
- loop di nuovo per ogni ChatId e controlla se è stata raggiunta la condizione per il prezzo
- avviso di conseguenza
- cancella il record da db e da Redis
Questo design è ok? o c'è una caratteristica migliore di Redis che mi manca? L'intero "set all'interno di un set" fa un po 'di rumore nella mia testa, ma forse questo è il modo in cui è supposto essere usato. Questa è la prima volta che progetta una soluzione utilizzando Redis.
Grazie mille,