Redis set di set - Esiste un design migliore?

3

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,

    
posta Vallo 28.08.2017 - 20:29
fonte

0 risposte

Leggi altre domande sui tag