Hvordan implementerer du det sidste skema i Redis? Er det muligt?
Redis er frit med skemaer . Lad os kalde det, du har brug for, en tilgang til datalagring .
En mulig tilgang er at bruge HSET
eller HMSET
at tilføje disse JSON-objekter efter id, hvor deres id er nøglen og JSON-teksten er værdien . Vi kalder denne hash som users:byid
.
Dette er den første del af problemet. Nu kan du få objekter efter id .
Nu er det næste spørgsmål, at du vil hente objekter i en række af det, du kalder rangering . For at få dette, skal du gemme dine objekter i et sorteret sæt ved hjælp af ZADD
. Sorterede sæt er sorteret efter score, og elementer gemmes med en score . Det lyder perfekt til din brug!
Faktisk vil du gemme objekt-id'erne i hele det sorterede sæt:
zadd users:byranking 10 1 5 2
... hvor 10
er scoren (dvs. din faktiske rangeringsværdi) og 1 id og så videre.
Så hvordan filtrerer du varer efter rangering? Bruger ZRANGEBYSCORE
:
- Ved at rangere mellem 0 og 10, eksklusive 10.
zrangebyscore users:byranking 0 (10
- Ved at rangere mellem 0 og 10, inklusive 10.
zrangebyscore users:byranking 0 10
Den såkaldte ZRANGEBYSCORE
vil give dig id'erne for hentede brugere. Hvordan får du deres JSON-tekst? Brug af HMGET
:
HMGET users:byid 1 2
...hvilket får begge brugere med id 1
og 2
, hvis 10
ranking er inklusive.