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

Trova chiave per valore

Una delle cose che impari velocemente mentre lavori con redis è che puoi progettare la tua struttura dati in base alle tue esigenze di accesso, specialmente quando si tratta di relazioni (dopotutto non è un database relazionale)

Non c'è modo di cercare per "valore" con una complessità temporale O(1) come hai già notato, ma ci sono modi per avvicinarsi a ciò che descrivi usando redis. Ecco cosa consiglierei:

  • Memorizza i tuoi dati utente per ID utente (ad es. in un hash) come stai già facendo.
  • Disporre di un set aggiuntivo per ogni ID docente contenente tutti gli ID utente che corrispondono all'ID docente in questione.

Potrebbe sembrare una duplicazione dei dati della relazione, dal momento che i tuoi dati utente dovrebbero memorizzare l'ID della lezione e i dati della tua lezione memorizzerebbero gli ID utente, ma questo è il (piccolo) prezzo da pagare se si vuole costruire relazioni in un no -archivio dati relazionali come redis. In termini pratici funziona bene; la memoria è raramente un collo di bottiglia per set di dati di piccole dimensioni (pensa a migliaia di ID).

Per avere un quadro migliore di come stanno le persone che usano redis per modellare le applicazioni con le relazioni, consiglio di leggere Progettazione e implementazione di un semplice clone di Twitter e il codice sorgente di Lamernews, entrambi scritti dall'autore di redis Salvatore Sanfilippo.