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

Elementi filtranti in Redis

Come si implementa l'ultimo schema in Redis? È possibile?

Redis è senza schema . Chiamiamo ciò di cui hai bisogno un approccio di archiviazione dei dati .

Un possibile approccio è usare HSET o HMSET per aggiungere questi oggetti JSON tramite id, dove il loro id è la chiave e il testo JSON è il valore . Chiameremo questo hash come users:byid .

Questa è la prima parte del problema. Ora puoi ottenere oggetti per ID .

Ora il prossimo problema è che vuoi recuperare oggetti in un intervallo di ciò che chiami classifica . Per ottenerlo, devi archiviare i tuoi oggetti in un set ordinato usando ZADD . Gli insiemi ordinati sono ordinati per punteggio e gli elementi vengono memorizzati con un punteggio . Sembra perfetto per il tuo caso d'uso!

In realtà memorizzerai gli ID oggetto nell'intero set ordinato:

zadd users:byranking 10 1 5 2

... dove 10 è il punteggio (ovvero il tuo valore effettivo in classifica) e 1 l'id e così via.

Quindi, come filtri gli articoli in base al ranking? Usando ZRANGEBYSCORE :

  • Per classifica tra 0 e 10, escluso 10. zrangebyscore users:byranking 0 (10
  • Per classifica tra 0 e 10, di cui 10. zrangebyscore users:byranking 0 10

Il cosiddetto ZRANGEBYSCORE ti darà gli ID degli utenti recuperati. Come ottieni il loro testo JSON? Usando HMGET :

 HMGET users:byid 1 2

...che otterrà entrambi gli utenti con id 1 e 2 , se 10 la classifica è inclusiva.