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

Jak *prawidłowo* odpytać Redis z Tornado?

Jeśli chodzi o blokowanie poleceń, takich jak BLPOP lub słuchanie kanału Pub/Sub, potrzebujesz asynchronicznego klienta, takiego jak tornado-redis. Możesz zacząć od tego demo, aby zobaczyć, jak klient tornado-redis może zostać wykorzystany do stworzenia prostej aplikacji do publicznego czatu.

Ale w większości innych przypadków polecam używanie synchronicznego klienta redis-py w połączeniu z Hiredis.

Główną zaletą klienta asynchronicznego jest to, że serwer może obsługiwać przychodzące żądania podczas oczekiwania na odpowiedź serwera Redis. Jednak serwer Redis jest tak szybki, że w większości przypadków obciążenie związane z konfiguracją asynchronicznych wywołań zwrotnych w aplikacji Tornado zwiększa całkowity czas przetwarzania żądania niż czas oczekiwania na odpowiedź serwera Redis.

Korzystając z klienta asynchronicznego możesz próbować wysłać wiele żądań do serwera Redis w tym samym czasie, ale serwer Redis jest serwerem jednowątkowym (tak jak serwer Tornado), więc będzie odpowiadał na te żądania jeden po drugim i prawie nic nie zyskasz. W rzeczywistości nie musisz wysyłać wielu poleceń Redis jednocześnie do tego samego serwera Redis, o ile istnieją potoki i polecenia, takie jak MGET/MSET.

Klient asynchroniczny ma pewne zalety, gdy używasz kilku instancji serwera Redis, ale sugeruję używanie klienta synchronicznego (redis-py) i serwera proxy, takiego jak twemproxy lub ten (ten ostatni obsługuje potokowanie i polecenia MGET/MSET).

Proponuję również nie używać puli połączeń podczas korzystania z klienta redis-py w aplikacjach Tornado . Po prostu utwórz jeden Redis instancja obiektu dla każdej bazy danych Redis, z którą łączy się Twoja aplikacja.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis z Resque i Rails:polecenie ERR jest niedozwolone, gdy używana pamięć> „maxmemory”

  2. Spring Session Data Redis — uzyskaj prawidłowe sesje, aktualny użytkownik ze sklepu Redis Store

  3. Wyjątek limitu czasu po poleceniach asynchronicznych i Task.WhenAny czeka w StackExchange.Redis

  4. Zablokuj dostęp do klucza Redis (ServiceStack)

  5. Czy możliwy jest nieblokujący Redis pubsub?