Redis
 sql >> Database >  >> NoSQL >> Redis

Prestazioni Redis su una CPU multi core

Ho esaminato il sito Web di redis e ho scoperto che il redis non è progettato per una CPU multi-core. La mia domanda è:perché è così?

È una decisione progettuale.

Redis è a thread singolo con epoll/kqueue e scala indefinitamente in termini di concorrenza I/O. [email protected] (creatore di Redis)

Un motivo per scegliere un approccio basato sugli eventi è la sincronizzazione tra i thread ha un costo sia a livello di software (complessità del codice) che di hardware (commutazione del contesto). Aggiungi a questo che il collo di bottiglia di Redis è solitamente la rete , non la CPU. D'altra parte, un'architettura a thread singolo ha i suoi vantaggi (ad esempio la garanzia di atomicità).

Pertanto i loop di eventi sembrano un buon progetto per un efficiente &scalabile sistema come Redis.

Inoltre, se sì, come possiamo utilizzare il 100% delle risorse della CPU con Redis su una CPU multi-core.

L'approccio Redis alla scalabilità su più core è sharding , principalmente insieme a Twemproxy.

Tuttavia, se per qualche motivo vuoi ancora utilizzare un approccio multi-thread, dai un'occhiata a Thredis ma assicurati di aver compreso le implicazioni di ciò che ha fatto il suo autore (non puoi usarlo come master di replica, per esempio).