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

Czy biblioteka Hiredis Redis tworzy własny wątek dla asynchronicznych wywołań zwrotnych?

Klient Redis nie tworzy żadnych dodatkowych wątków Clent i działa w istniejącym wątku.

Redis pracował w innym (głównym) procesie. Redis API, którego używasz, działa w twoim lokalnym procesie i używa komunikacji między procesami do głównego procesu. Żądanie asynchroniczne oznacza, że ​​twój proces lub wątek przekazał zadanie innemu, a następnie może wykonać dowolne inne zadanie lub zdarzenie oczekiwania. Jakiś czas później odpowiedź asynchroniczna dotarła do Twojej aplikacji i jest dostępna do użycia. Twoja aplikacja musi korzystać z https://en.wikipedia.org/wiki/Event_loop lub dowolnego systemu zarządzania asynchronicznego, który powiadomi Cię przez wywołanie zwrotne w celu obsługi zdarzenia (w tym przypadku ponowna odpowiedź).

Architektura asynchroniczna oznacza, że ​​uruchamiasz pętlę zdarzeń, która wywołuje procedury obsługi wywołań zwrotnych dla każdego zdarzenia. Po wywołaniu wywołania zwrotnego możesz utworzyć wiele zadań asynchronicznych. Po utworzeniu zadania powinno być wywołane, gdy zadanie zostanie wykonane lub wystąpi błąd. Callback może być przypisany do uruchomienia aplikacji lub pojawienia się nowego połączenia internetowego. Po wywołaniu wywołania zwrotnego można utworzyć zadanie redis, a później wywołane zostanie wywołanie zwrotne zdarzenia wynikowego. Wszystkie rzeczy w bieżącym wątku. Nie mam wielu wątków, rozsądnie można się spodziewać, że masz jedną pętlę zdarzeń na każdy wątek.

Jednowątkowy charakter Redis:http://redis.io/topics/latency#single-threaded-nature-of-redis

Gniazdo klienta jest przełączane w stan nieblokujący, ponieważ Redis używa multipleksowania i nieblokującego we/wy. http://redis.io/topics/clients Oznacza to, że Twój klient nigdy nie zostanie zablokowany.

Od Redis 2.4 wątki w Redis używane są tylko w celu wykonywania niektórych wolnych operacji I/O w tle, głównie związanych z dyskowymi I/O, ale nie zmienia to faktu, że Redis obsługuje wszystkie żądania za pomocą jednego wątku.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wydajność SCAN vs KEYS w Redis

  2. Jak uniknąć wywołań Redis w ograniczeniach skryptu Lua?

  3. Jak otrzymać wiadomość o publikacji Redis w Go

  4. Używanie selera do synchronicznych zapytań w zewnętrznym interfejsie API w czasie rzeczywistym za pomocą Gevent

  5. Wiele instancji Redis