sql >> Databasteknik >  >> NoSQL >> Redis

Filtrera element i Redis

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.




  1. MongoDB $finns

  2. DB med bästa inserts/sek prestanda?

  3. Mongoose-baserad app-arkitektur

  4. Redis Lua script implementerar CAS (check-and-set)?