sql >> Databáze >  >> NoSQL >> Redis

Získání více klíčových hodnot z Redis

Provádění smyčky na položkách a synchronní přístup ke každému prvku není příliš efektivní. S Redis 2.4 existují různé způsoby, jak dělat, co chcete:

  • pomocí příkazu sort
  • pomocí propojení
  • pomocí příkazů s variadickými parametry

S Redis 2.6 můžete také použít skriptování Lua, ale to zde není ve skutečnosti vyžadováno.

Mimochodem, datová struktura, kterou jste popsal, by mohla být vylepšena pomocí hashů. Místo ukládání uživatelských dat do samostatných klíčů je můžete seskupit do hash objektu.

Pomocí příkazu řazení

Můžete použít příkaz Redis sort k načtení dat v rámci jedné zpáteční cesty.

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"

Použití potrubí

Klient Ruby podporuje pipelining (tj. možnost odeslat několik dotazů do Redis a čekat na několik odpovědí).

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

Výše uvedený kód načte data pouze ve dvou zpátečních cestách.

Použití příkazu variadic parametr

Příkaz MGET lze použít k načtení několika dat najednou:

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"

Cena je zde také dvě zpáteční. To funguje, pokud můžete zaručit, že počet klíčů k načtení je omezený. Pokud ne, potrubí je mnohem lepší řešení.



  1. Jak obejít nedostatek transakcí v MongoDB?

  2. Pruh:Musí poskytnout zdroj nebo zákazníka

  3. Jak nakonfigurujete Embedded MongDB pro testování integrace v aplikaci Spring Boot?

  4. Je Redis TimeSeries tím správným nástrojem k zachycení svícnů v cenách akcií