Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Desempenho do Redis em uma CPU multicore


Dei uma olhada no site do redis e descobri que o redis não foi projetado para uma CPU multi-core. Minha pergunta é:por que é assim?

É uma decisão de projeto.

O Redis é single-thread com epoll/kqueue e escala indefinidamente em termos de simultaneidade de E/S. [email protected] (criador do Redis)

Uma razão para escolher uma abordagem orientada a eventos é que a sincronização entre threads tem um custo tanto no software (complexidade do código) quanto no nível de hardware (comutação de contexto). Acrescente a isso que o gargalo do Redis geralmente é a rede , não a CPU. Por outro lado, uma arquitetura de thread único tem seus próprios benefícios (por exemplo, a garantia de atomicidade).

Portanto, os loops de eventos parecem um bom design para um eficiente &escalável sistema como o Redis.

Além disso, se sim, como podemos fazer 100% de utilização dos recursos da CPU com redis em uma CPU de vários núcleos.

A abordagem do Redis para dimensionar vários núcleos é sharding , principalmente junto com o Twemproxy.

No entanto, se por algum motivo você ainda quiser usar uma abordagem multithread, dê uma olhada no Thredis, mas certifique-se de entender as implicações do que seu autor fez (você não pode usá-lo como um mestre de replicação, por exemplo).