high - redis replication
Redis sharding, pipelining y round-trips (1)
Supongamos que en su aplicación web necesita hacer una serie de llamadas redis para renderizar una página, como obtener un montón de hashes de usuario. Para agilizar esto, puede terminar sus comandos de redis en una sección MULTI / EXEC, usando el pipeline, para evitar hacer muchos viajes de ida y vuelta. Pero también quiere fragmentar sus datos, porque tiene mucho de eso y / o desea distribuir escrituras. Entonces la canalización no funcionaría, ya que las claves diferentes podrían vivir en diferentes nodos, a menos que tenga una idea clara del diseño de datos de su aplicación y fragmento en función de las funciones en lugar de utilizar una función de control. Entonces, ¿cuáles son las mejores prácticas para fragmentar datos en diferentes servidores sin comprometer demasiado el rendimiento debido a que muchos servidores son contactados para completar un trabajo "conceptualmente único"? Creo que la respuesta depende de la aplicación web que se está desarrollando, y eventualmente haré algunas pruebas, pero sería útil saber cómo otros han lidiado con las concesiones que mencioné.
MULTI / EXEC y pipelining son dos cosas diferentes. Puede hacer MULTI / EXEC sin ningún tipo de canalización y viceversa.
Si desea fragmentar y canalizar al mismo tiempo, debe agrupar las operaciones en canalizaciones por instancia de Redis y luego utilizar la canalización para cada instancia.
Aquí hay un ejemplo simple usando Ruby: https://gist.github.com/2587593
Una forma de mejorar aún más el rendimiento es paralelizar el tráfico en las instancias de Redis una vez que las operaciones se han agrupado (es decir, agrupa las operaciones, las envía a todas las instancias en paralelo, espera las respuestas de todas las instancias).
Esto es un poco más complejo, porque se requiere un cliente no bloqueante asíncrono. Para un rendimiento máximo, C / C ++ se debe utilizar en el lado del cliente. Esto se puede implementar fácilmente mediante el uso de hiredis + el bucle de eventos de su elección.