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.