Redis es un motor de base de datos basado en el almacenamiento en memoria, además de permitir la persistencia. A continuación revisaremos algunas características de Redis.
Redis, todo en uno
Usando Redis podemos tener una base de datos que actúa como caché y persistencia al mismo tiempo, así puedes dejar ese trabajo al mismo motor y no necesitas usar librerías externas u otra base de datos para manejar o diferenciar entre esos dos tipos de datos.
Esta herramienta también provee operaciones sobre los datos almacenados en memoria que son identificados como si fueran una variable hash soportando diversas estructuras bastante flexibles [1]. Para cada tipo de variable, Redis provee diferentes operaciones para su manipulación.
En resumen, Redis es una base de datos distribuida que administra datos en memoria, mejorando el performance de las respuestas y ofreciendo operaciones sobre esos datos. [2]
RediSearch
Si lo que necesitas es hacer búsquedas complejas sobre masivas cantidades de datos, puedes usar RediSearch que posee un engine optimizado y moderno que opera sobre Redis, está escrito en C y es comparable a otras herramientas como ElasticSearch. [3]
Usar en una red interna
A pesar de que usa un sistema para autenticar a las aplicaciones clientes, por su naturaleza distribuida, puede permitir muchos intentos sin bloquearse. Lo cual puede ser vulnerable usando técnicas de fuerza bruta para descubrir contraseñas.
Usos de Redis
Algunos de los usos más populares son los siguientes:
- Sistema cache con políticas de persistencia
- Sistema de colas
- Almacenar sesiones en memoria con tiempos de expiración.
- Cuando se requiera guardar un estado temporal, por ejemplo, en una arquitectura de microservicios
- Almacenar sesiones de usuario
- También puede ser usado para: un carro de compras, un juego online, avisar que un elemento está bloqueado o que hay un proceso en progreso.
Redis es flexible, rápido y escalable, entregando la libertad a las aplicaciones sobre el uso y las políticas con las cuales los datos son almacenados de acuerdos a los criterios de velocidad y tamaños que necesites.
Es recomendable para un extenso rango de tipos de aplicaciones, siempre y cuando resuelva algunos problemas que las otras bases de datos necesitan de más componentes para hacer lo que ya tenemos en uno.
[1] https://redis.io/topics/data-types
[2] https://redis.io/commands
[3] https://redislabs.com/blog/search-benchmarking-redisearch-vs-elasticsearch/