sql >> Databáze >  >> NoSQL >> Redis

Výkon Redis na vícejádrovém CPU

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



  1. Jak získat zpět původní dokument po agregaci

  2. Schéma Mongoose:„unikátní“ není respektováno

  3. Použití COD a CML k vytváření aplikací, které předpovídají skladová data

  4. Jak provedu ekvivalent SQL Join v MongoDB?