Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Pobieranie wielu kluczowych wartości z Redis

Wykonanie pętli na elementach i synchroniczny dostęp do każdego elementu nie jest zbyt wydajne. W przypadku Redis 2.4 istnieją różne sposoby robienia tego, co chcesz:

  • za pomocą polecenia sort
  • za pomocą potoku
  • za pomocą poleceń parametrów zmiennych

W Redis 2.6 możesz również używać skryptów Lua, ale nie jest to tutaj naprawdę wymagane.

Nawiasem mówiąc, opisaną przez Ciebie strukturę danych można poprawić za pomocą skrótów. Zamiast przechowywać dane użytkownika w oddzielnych kluczach, możesz zgrupować je w obiekcie hash.

Korzystanie z polecenia sortowania

Możesz użyć polecenia sortowania Redis, aby pobrać dane w jednej podróży w obie strony.

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"

Korzystanie z potoku

Klient Ruby obsługuje potokowanie (tj. możliwość wysyłania kilku zapytań do Redis i oczekiwania na kilka odpowiedzi).

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

Powyższy kod pobierze dane tylko w dwóch rundach.

Korzystanie z polecenia parametru zmiennego

Polecenia MGET można użyć do pobrania kilku danych w jednym ujęciu:

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"

Koszt tutaj to również dwie podróże w obie strony. Działa to, jeśli możesz zagwarantować, że liczba kluczy do pobrania jest ograniczona. Jeśli nie, znacznie lepszym rozwiązaniem jest potokowanie.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak utworzyć połączenie Redis z Master i Slave?

  2. Jakie są konsekwencje wyłączenia plotek, mieszania i bicia serca dla pracowników selera?

  3. kanały bez warstwy kanałowej lub innego darmowego hostingu

  4. Kolejka zadań z redis przy użyciu BLPOP

  5. jak zaimportować plik danych .csv do bazy danych Redis