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

Redis jest jednowątkowy, więc jak wykonuje współbieżne operacje we/wy?

Cóż, to zależy od tego, jak zdefiniujesz współbieżność.

W oprogramowaniu po stronie serwera współbieżność i równoległość są często uważane za różne koncepcje. W serwerze obsługa współbieżnych operacji we/wy oznacza, że ​​serwer może obsługiwać kilku klientów, wykonując kilka przepływów odpowiadających tym klientom za pomocą tylko jednej jednostki obliczeniowej. W tym kontekście równoległość oznaczałaby, że serwer może wykonywać kilka czynności jednocześnie (z wieloma jednostkami obliczeniowymi), co jest różne.

Na przykład barman jest w stanie opiekować się kilkoma klientami, podczas gdy na raz może przygotować tylko jeden napój. Dzięki temu może zapewnić współbieżność bez równoległości.

To pytanie było omawiane tutaj:Jaka jest różnica między współbieżnością a równoległością?

Zobacz także prezentację Roba Pike'a.

Program jednowątkowy może zdecydowanie zapewnić współbieżność na poziomie we/wy, używając mechanizmu (de)multipleksowania we/wy i pętli zdarzeń (co robi Redis).

Równoległość ma swoją cenę:z wieloma gniazdami/wieloma rdzeniami, które można znaleźć na nowoczesnym sprzęcie, synchronizacja między wątkami jest niezwykle kosztowna. Z drugiej strony wąskim gardłem wydajnego silnika pamięci masowej, takiego jak Redis, bardzo często jest sieć, na długo przed procesorem. Izolowane pętle zdarzeń (które nie wymagają synchronizacji) są zatem postrzegane jako dobry projekt do budowy wydajnych, skalowalnych serwerów.

Fakt, że operacje Redis są niepodzielne, jest po prostu konsekwencją jednowątkowej pętli zdarzeń. Ciekawostką jest to, że atomowość jest zapewniona bez dodatkowych kosztów (nie wymaga synchronizacji). Może być wykorzystany przez użytkownika do wdrożenia optymistycznych blokad i innych wzorców bez płacenia za koszty synchronizacji.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Błąd autoryzacji Redis z Node.js i socket.io

  2. Redis Wyjątki dotyczące braku pamięci, ale nadal mają dużo pamięci

  3. Opóźniona realizacja / planowanie z Redis?

  4. redis do logowania

  5. Redis Expire nie działa