Redis es una de las bases de datos NoSQL más populares, y seguramente la más utilizada dentro del segmento de las bases de datos clave-valor. Según el ranking de db-engines, Redis es la BBDD más popular entre las clave-valor, la tercera entre las NoSQL, y la décima en el ranking global, que incluye también a las bases de datos relacionales como Oracle, MySQL y SQL Server.
La popularidad de Redis se debe en gran medida a su espectacular velocidad, ya que mantiene la información en memoria; pero también a su sencillez de uso y flexibilidad.
Sin embargo lo que hace que Redis sea tan popular, es que además de permitir asociar valores de tipo string a una clave, permite utilizar tipos de datos avanzados, que junto a las operaciones asociadas a estos tipos de datos, logra resolver muchos casos de uso de negocio, que a priori no pensaríamos que fuéramos capaces con una base de datos clave-valor. No en vano, Redis se define usualmente como un servidor de estructuras de datos, aunque en sus inicios, haciendo honor a su nombre, fuese un simple diccionario remoto (REmote DIctionary Server).
En Paradigma creemos que siempre se debe usar la mejor herramienta para cada trabajo, en este caso, la tecnología de almacenamiento que mejor se ajuste a los requisitos de negocio. Las tecnologías NoSQL, desde su concepción, tienen que ver con la especialización en la gestión de datos, y Redis es un caso excelente de cómo resolver necesidades concretas con un motor de almacenamiento, por sí mismo, o en combinación con otras bases de datos NoSQL y/o relacionales.
Para tratar de conocer un poco mejor cómo podemos usar Redis, en este post vamos a dar ejemplos de algunos casos de uso de Redis, y de cómo empresas conocidas en todo el mundo están utilizando este almacén clave-valor.
En posts posteriores profundizaremos en los tipos de datos que soporta Redis, y en algunas de sus características técnicas.
Algunos casos de uso que habitualmente se resuelven con Redis son:
- Caché de páginas web
- Podemos usar Redis como caché de páginas HTML, o fragmentos de estas, lo que acelerará el acceso a las mismas, a la vez que evitamos llegar a los servidores web o de aplicaciones, reduciendo la carga en estos y en los sistemas de bases de datos a los que los mismos accedan. Además de un incremento en la velocidad, esto puede suponer un importante ahorro económico en términos de hardware y licencias de software.
- Almacenamiento de sesiones de usuario
- Podemos usar Redis como un almacén de sesiones de muy rápido acceso, en el que mantengamos el identificador de sesión junto con toda la información asociada a la misma. Además de reducir los tiempos de latencia de nuestra solución, igual que en el caso anterior evitaremos una vez más accesos a otras bases de datos. Además Redis permite asociar un tiempo de expiración a cada clave, con lo que las sesiones finalizarán automáticamente sin tener que gestionarlo en el código de la aplicación.
- Almacenamiento de carritos de la compra
- De forma muy similar al almacén de sesiones de usuario, podemos almacenar en Redis los artículos contenidos en la cesta de la compra de un usuario, y la información asociada a los mismos, permitiéndonos acceder en cualquier momento a ellos con una latencia mínima.
- Caché de base de datos
- Otra forma de descargar a las bases de datos operacionales es almacenar en Redis el resultado de determinadas consultas que se ejecuten con mucha frecuencia, y cuya información no cambia a menudo, o no es crítico mantener actualizada al instante.
- Contadores y estadísticas
- Para muchos casos de uso es necesario manejar contadores y estadísticas en tiempo real, y Redis tiene soporte para la gestión concurrente y atómica de los mismos. Algunos ejemplos posibles serían el contador de visualización de un producto, votos de usuarios, o contadores de acceso a un recurso para poder limitar su uso.
- Listas de elementos recientes
- Es muy habitual mostrar listas en las que aparecen las últimas actualizaciones de algún elemento hechas por los usuarios. Por ejemplo, los últimos comentarios sobre un post, las últimas imágenes subidas, los artículos de un catálogo vistos recientemente, etc. Este tipo de operaciones suele ser muy costoso para las bases de datos relacionales, sobre todo cuando el volumen de información se va haciendo mayor, pero Redis es capaz de resolver esta operación con independencia del volumen.
- Base de datos principal
- Para determinados casos, Redis se puede usar como almacenamiento principal gracias a la potencia de modelado que permiten sus avanzados tipos de datos. Destaca su uso en casos como los microservicios, en los que podemos aprovechar la velocidad de Redis para construir soluciones especializadas, simples de implementar y mantener, que a la vez ofrecen un alto rendimiento.
A continuación podemos ver ejemplos de cómo algunas de las empresas más conocidas del mundo están usando Redis.
- Twitter usa Redis para mantener el timeline de sus usuarios. El timeline es una lista de los tuits de las personas a las que se sigue, y Twitter usa Redis para poder actualizar en el menor tiempo posible los timelines de todos sus usuarios. Teniendo en cuenta que algunos usuarios tienen más de 60.000.000 de seguidores, actualizar todas estas listas cada vez que se escribe un tuit, se convierte en una operación crítica.
- Hulu usa Redis para mantener la posición en la que un usuario se encuentra en un vídeo, así como el histórico de visualizaciones de los usuarios.
- Pinterest utiliza Redis para mantener la información de los usuarios y los tablones que sigue cada uno.
- Flickr utiliza Redis como base del sistema de colas para mantener de manera asíncrona las tareas a realizar sobre las imágenes de los usuarios. También forma parte de la infraestructura para la generación de notificaciones push a sus usuarios.
- Trello usa Redis para mantener toda la información efímera que es necesario compartir entre todos sus servidores.
Si crees que Redis puede ser la solución en tu próximo proyecto, desde Paradigma estaremos encantados de ayudarte con cualquier necesidad que tengas. Si quieres contar con nuestra ayuda, contacta con nosotros.
Cuéntanos qué te parece.