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).