Rastreo de lecturas escalable con Redis Bitmaps

Un amigo vino con un problema de escalabilidad. Había diseñado una funcionalidad para marcar si cada usuario había leído las publicaciones más recientes de cada categoría. La primera idea fue almacenar una fila en MySQL por cada par user_id, category_id y actualizarla cada vez que cambiaba algo. En principio parecía sencillo, pero en producción todo se rompió.
El diseño inicial tenía un esquema similar a: category_user_read ( user_id BIGINT , category_id BIGINT , read BOOLEAN , PRIMARY KEY ( user_id , category_id ), FOREIGN KEY ( user_id ) REFERENCES users ( id ) ); La lógica era simple: cuando un usuario abría una categoría actualizar su fila con read = true; cuando se añadía un nuevo post actualizar todas las filas de esa categoría con read = false.
Por qué falló: en la práctica esa tabla se convirtió en un cuello de botella. Cada vista de página disparaba una actualización. Cada post nuevo producía una actualización masiva que podía afectar a millones de filas. InnoDB colocaba locks exclusivos por fila y la clave foránea a users añadía más comprobaciones y bloqueo. Con miles de usuarios concurrentes la tabla pasó a ser un punto de contención global.
Al aclarar los requisitos descubrimos que el producto solo necesitaba algo mucho más simple: mostrar un punto rojo en la pestaña si el usuario no había leído la categoría. No hacía falta almacenar el id exacto del último post leído. Los datos no eran críticos y podían tolerar cierta pérdida. Pero era imprescindible que fuera rápido y escalable a millones de usuarios. Esa simple aclaración cambió todo el diseño.
La solución propuesta fue mover el estado a Redis usando bitmaps. Un bitmap es un arreglo de ceros y unos donde cada posición corresponde a un user_id. Un bitmap por categoría. Usamos el número de user_id como índice dentro del bit array. Operaciones típicas: SETBIT category:123:read 456 1 para marcar lectura, GETBIT category:123:read 456 para comprobar, y al publicar un nuevo post simplemente borrar la clave DEL category:123:read para resetear el estado de esa categoría.
Ventajas: operaciones ultrarrápidas con coste constante O(1) y sin overhead de locking. Huella de memoria mínima: 1 millon de usuarios = 1 millon de bits = aproximadamente 122 KB. Incluso con decenas de millones de usuarios el coste en memoria se mantiene en megabytes. Escala de forma natural y no sufre la contención que provoca una tabla relacional con millones de actualizaciones concurrentes. La compensación principal es que si los IDs de usuario son muy dispersos el bitmap puede ser mayor de lo estrictamente necesario, pero en la mayoría de casos ese coste es pequeño frente a la simplicidad y velocidad ganadas.
Implementación práctica: mantener una clave por categoría y usar SETBIT al abrir la categoría y DEL cuando se publica un nuevo post. Si se necesita conservar historial o llevar métricas más detalladas se puede combinar Redis con procesos asíncronos que persistan resúmenes en una base de datos analítica, manteniendo la ruta crítica en memoria para latencias bajas.
En Q2BSTUDIO aplicamos patrones similares cuando diseñamos sistemas escalables y fiables. Somos una empresa de desarrollo de software y aplicaciones a medida que integra inteligencia artificial y ciberseguridad en soluciones reales para empresas. Si buscas desarrollar una app optimizada para gran volumen de usuarios podemos encargarnos del diseño backend y de la integración con Redis y servicios cloud. Descubre nuestros servicios de software a medida en desarrollo de aplicaciones y software multiplataforma y nuestras soluciones para despliegue y operación en la nube en servicios cloud AWS y Azure.
Palabras clave que aplicamos en nuestros proyectos: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. Combinamos arquitectura eficiente, automatización y buenas prácticas de seguridad para ofrecer productos que escalan y que pueden integrarse con inteligencia de negocio y soluciones BI como Power BI.
Si quieres una auditoría o prototipo para migrar una implementación pesada en base de datos a una solución basada en Redis bitmaps, o explorar cómo incluir IA en tu producto, en Q2BSTUDIO podemos ayudarte desde la definición hasta la puesta en producción.
Comentarios