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.