Hur implementerar du det sista schemat i Redis? Är det möjligt?
Redis är schemalöst . Låt oss kalla det du behöver för datalagring .
En möjlig metod är att använda HSET
eller HMSET
för att lägga till dessa JSON-objekt efter id, där deras id är nyckeln och JSON-texten är värdet . Vi kallar denna hash som users:byid
.
Detta är den första delen av problemet. Nu kan du få objekt efter id .
Nästa fråga är att du vill hämta objekt i en rad av vad du kallar ranking . För att få detta måste du lagra dina objekt i en sorterad uppsättning med ZADD
. Sorterade uppsättningar sorteras efter poäng och objekt lagras med poäng . Det låter perfekt för ditt användningsfall!
Egentligen kommer du att lagra objekt-id:n i hela den sorterade uppsättningen:
zadd users:byranking 10 1 5 2
... där 10
är poängen (dvs ditt faktiska rankningsvärde) och 1 id och så vidare.
Så, hur filtrerar du objekt efter rankning? Använder ZRANGEBYSCORE
:
- Genom att rangordna mellan 0 och 10, exklusive 10.
zrangebyscore users:byranking 0 (10
- Genom att rangordna mellan 0 och 10, inklusive 10.
zrangebyscore users:byranking 0 10
Den så kallade ZRANGEBYSCORE
kommer att ge dig ID för hämtade användare. Hur får du deras JSON-text? Använder HMGET
:
HMGET users:byid 1 2
...som kommer att få båda användare med id 1
och 2
, om 10
rankningen är inklusive.