memcache - Redis rendimiento en una CPU multi-core
que es mejor intel core i5 o i7 (2)
Estoy buscando redis para proporcionar un almacenamiento de caché intermedio con muchos cálculos en torno a operaciones de conjuntos como intersección y unión.
He mirado el sitio web de redis y descubrí que el redis no está diseñado para una CPU de varios núcleos. Mi pregunta es, ¿por qué es así?
Además, si es así, ¿cómo podemos hacer una utilización del 100% de los recursos de la CPU con redis en una CPU de varios núcleos?
He mirado el sitio web de redis y descubrí que el redis no está diseñado para una CPU de varios núcleos. Mi pregunta es, ¿por qué es así?
Es una decisión de diseño.
Redis es de un solo hilo con epoll / kqueue y se escala de forma indefinida en términos de concurrencia de E / S. - @ antirez (creador de redis)
Una razón para elegir un enfoque basado en eventos es que la sincronización entre subprocesos tiene un costo tanto en el software (complejidad del código) como en el nivel de hardware (cambio de contexto). Agregue a esto que el cuello de botella de Redis es generalmente la red , no la CPU. Por otro lado, una arquitectura de un solo hilo tiene sus propios beneficios (por ejemplo, la garantía de atomicidad).
Por lo tanto, los bucles de eventos parecen ser un buen diseño para un sistema eficiente y escalable como Redis.
Además, si es así, ¿cómo podemos hacer una utilización del 100% de los recursos de la CPU con redis en una CPU de varios núcleos?
El enfoque de Redis para escalar sobre múltiples núcleos es sharding , principalmente junto con Twemproxy .
Sin embargo, si por alguna razón aún desea utilizar un enfoque de subprocesos múltiples, eche un vistazo a Thredis pero asegúrese de comprender las implicaciones de lo que hizo su autor (no puede usarlo como maestro de replicación, por ejemplo).
El servidor de Redis es un solo hilo. Pero permite lograr una utilización del 100% de los recursos de la CPU utilizando nodos Redis (maestro y / o esclavo).
Las operaciones de lectura se pueden escalar utilizando la configuración maestro / esclavo de Redis con un solo maestro. Uno del núcleo de la CPU utilizado para el nodo maestro y todos los demás para los esclavos.
Las operaciones de escritura se pueden escalar usando la configuración de clúster multi-master de Redis. Múltiples núcleos de CPU utilizados para nodos maestros y todos los demás para esclavos.
Redisson : el marco basado en Redis para Java proporciona compatibilidad total con el clúster de Redis. Funciona con AWS Elasticache y Azure Redis Cache. Incluye actualización de topología y descubrimiento maestro / esclavo.