Podíval jsem se na webovou stránku redis a zjistil jsem, že redis není určen pro vícejádrový procesor. Moje otázka zní:Proč tomu tak je?
Je to rozhodnutí o designu.
Redis je jednovláknový s epoll/kqueue a neomezeně se škáluje z hlediska souběžnosti I/O. [email protected] (tvůrce Redis)
Důvodem pro výběr přístupu řízeného událostmi je synchronizace mezi vlákny něco stojí jak na úrovni softwaru (složitost kódu), tak na úrovni hardwaru (přepínání kontextu). Přidejte k tomu, že úzkým hrdlem Redis je obvykle síť , ne CPU. Na druhou stranu jednovláknová architektura má své výhody (například záruku atomicity).
Proto se smyčky událostí zdají jako dobrý návrh pro efektivní a škálovatelné systém jako Redis.
Také, pokud ano, jak můžeme 100% využít zdroje CPU s redis na vícejádrových CPU.
Přístup Redis k škálování přes více jader je sharding , většinou společně s Twemproxy.
Pokud však z nějakého důvodu stále chcete používat vícevláknový přístup, podívejte se na Thredis, ale ujistěte se, že rozumíte důsledkům toho, co jeho autor udělal (nemůžete jej například použít jako hlavní replikační server).