Optimización de Redis mediante hash tags para evitar cuellos de botella

Fuentes: Redis optimization using hash tags to avoid bottlenecks

El artículo técnico detalla la implementación de un sistema de caché en Redis para una aplicación de economía de gig, donde la latencia en la estimación de rutas es crítica. El autor explica que, al utilizar Redis en modo cluster, las claves se distribuyen en 16.384 slots de hash, lo que impide el uso eficiente de comandos multi-clave como MSET si las claves no comparten el mismo slot. El problema surge porque las claves, basadas en hexágonos H3, tienen probabilidades extremadamente bajas de coincidir en un mismo slot, generando un alto número de peticiones individuales en lugar de lotes optimizados.

La solución propuesta utiliza los 'hash tags' de Redis para agrupar las claves de manera determinista. En lugar de usar etiquetas semánticas que crean puntos calientes en un solo nodo, el sistema genera una lista de enteros arbitrarios que, al ser hashados con CRC16, se distribuyen uniformemente entre los nodos primarios del cluster. Este proceso se realiza durante el inicio del proceso para determinar qué enteros son válidos para cada nodo. Al aplicar esta técnica, se permite agrupar miles de claves en lotes pequeños dirigidos a un único nodo, reduciendo drásticamente la latencia de lectura y permitiendo que la aplicación escale adecuadamente bajo alta carga de trabajo.