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.