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

Wydajność Redis na wielordzeniowym procesorze

Przejrzałem witrynę redis i stwierdziłem, że redis nie jest przeznaczony do wielordzeniowego procesora. Moje pytanie brzmi:dlaczego tak jest?

To decyzja projektowa.

Redis jest jednowątkowy z epoll/kqueue i skaluje się w nieskończoność pod względem współbieżności we/wy. [email protected] (twórca Redis)

Powodem wyboru podejścia opartego na zdarzeniach jest to, że synchronizacja między wątkami kosztuje zarówno oprogramowanie (złożoność kodu), jak i poziom sprzętu (przełączanie kontekstu). Dodaj do tego, że wąskim gardłem Redis jest zwykle sieć , a nie procesor. Z drugiej strony architektura jednowątkowa ma swoje zalety (na przykład gwarancję atomowości).

Dlatego pętle zdarzeń wydają się dobrym projektem dla wydajnego &skalowalny system taki jak Redis.

Ponadto, jeśli tak, w jaki sposób możemy w 100% wykorzystać zasoby procesora, korzystając z procesorów wielordzeniowych.

Podejście Redis do skalowania na wielu rdzeniach to sharding , głównie razem z Twemproxy.

Jeśli jednak z jakiegoś powodu nadal chcesz korzystać z wielowątkowego podejścia, spójrz na Thredis, ale upewnij się, że rozumiesz konsekwencje tego, co zrobił jego autor (nie możesz na przykład używać go jako wzorca replikacji).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Redis - tabele Lua jako wartości zwracane - dlaczego to nie działa?

  2. Jak używać kluczy przestrzeni nazw na redis, aby uniknąć kolizji nazw?

  3. wygasa klucz pamięci podręcznej redis w określonych godzinach, a nie w czasie trwania

  4. Jakie są przypadki użycia, w których Redis jest lepszy od Aerospike?

  5. Działanie dekoratora @cache_page() w django-redis-cache