sql >> Database >  >> NoSQL >> Redis

Meerdere sleutelwaarden ophalen van Redis

Een lus maken op de items en synchroon toegang krijgen tot elk element is niet erg efficiënt. Met Redis 2.4 zijn er verschillende manieren om te doen wat u wilt:

  • door het sorteercommando te gebruiken
  • door pipelining te gebruiken
  • door gebruik te maken van variabele parametercommando's

Met Redis 2.6 kun je ook Lua-scripting gebruiken, maar dat is hier niet echt nodig.

Overigens zou de door jou beschreven datastructuur verbeterd kunnen worden door het gebruik van hashes. In plaats van gebruikersgegevens in afzonderlijke sleutels op te slaan, kunt u ze in een hash-object groeperen.

Het sorteercommando gebruiken

U kunt het Redis-sorteercommando gebruiken om de gegevens in één rondreis op te halen.

redis> set users:1:name "daniel"
OK
redis> set users:1:age 24
OK
redis> set users:2:name "user2"
OK
redis> set users:2:age 24
OK
redis> sadd events:1:attendees users:1 users:2
(integer) 2
redis> sort events:1:attendees by nosort get *:name get *:age
1) "user2"
2) "24"
3) "daniel"
4) "24"

Pippeling gebruiken

De Ruby-client ondersteunt pipelining (d.w.z. de mogelijkheid om verschillende vragen naar Redis te sturen en op verschillende antwoorden te wachten).

keys = $redis.smembers("events:1:attendees")
res = $redis.pipelined do
   keys.each do |x|
      $redis.mget(x+":name",x+":age")
   end
end

De bovenstaande code haalt de gegevens slechts in twee retourvluchten op.

Viadic parameter commando gebruiken

Het MGET-commando kan worden gebruikt om meerdere gegevens in één keer op te halen:

redis> smembers events:1:attendees
1) "users:2"
2) "users:1"
redis> mget users:1:name users:1:age users:2:name users:2:age
1) "daniel"
2) "24"
3) "user2"
4) "24"

De kosten zijn hier ook twee retourvluchten. Dit werkt als u kunt garanderen dat het aantal op te halen sleutels beperkt is. Zo niet, dan is pipelining een veel betere oplossing.



  1. Flask by example - Een Redis-taakwachtrij implementeren

  2. ClusterControl runtime configuratie-opties

  3. 3 manieren om een ​​datum naar een string te converteren in MongoDB

  4. Zoeken in dubbel geneste array MongoDB