Redis es un almacén de estructura de datos de valores de clave en memoria rápido y de código abierto. Redis incorpora un conjunto de estructuras de datos en memoria versátiles que le permiten crear con facilidad diversas aplicaciones personalizadas. Entre los casos de uso principales de Redis se encuentran el almacenamiento en caché, la administración de sesiones, pub/sub y las clasificaciones. Es el almacén de valores de clave más popular en la actualidad. Tiene licencia BSD, está escrito en código C optimizado y admite numerosos lenguajes de desarrollo. Redis es el acrónico de REmote DIctionary Server (servidor de diccionario remoto).

Gracias a su velocidad y facilidad de uso, Redis es una opción popular para aplicaciones web, móviles, de juegos, de tecnología publicitaria y de IoT que requieren el mejor desempeño de su clase. AWS proporciona compatibilidad con Redis mediante un servicio de base de datos totalmente gestionado y optimizado llamado Amazon ElastiCache para Redis, y además permite a los clientes ejecutar Redis en AWS EC2 administrado por ellos mismos.

Amazon EC2 Container Service

Introducción
Benefit_ElastiCache_Performance

Todos los datos de Redis se encuentran en la memoria principal del servidor, a diferencia de la mayoría de sistemas de administración de bases de datos, que almacenan los datos en el disco o en SSD. Al eliminar la necesidad de acceder a discos, las bases de datos en memoria como Redis evitan los retrasos y pueden acceder a los datos con algoritmos más sencillos que utilizan menos instrucciones de la CPU. Las operaciones típicas tardan menos de un milisegundo en ejecutarse.

Benefit_ElastiCache_data_structure

Redis permite a los usuarios almacenar claves que se corresponden con diversos tipos de datos. El tipo de datos fundamental es una cadena, que puede componerse de texto o datos binarios y tener un tamaño de hasta 512 MB. Redis también admite listas de cadenas en el orden en el que se han agregado, conjuntos de cadenas sin ordenar, conjuntos clasificados ordenados por puntuación, hashes que almacenan una lista de campos y valores, e HyperLogLogs que cuentan los elementos únicos de un conjunto de datos. Con Redis, se puede almacenar en la memoria prácticamente cualquier tipo de datos.

Benefit_ElastiCache_easeofuse

Redis incorpora varias herramientas que facilitan y aceleran el desarrollo y las operaciones, incluidas Pub/Sub, para publicar mensajes en canales, que se entregan a suscriptores, lo que es ideal para sistemas de chat y mensajería; las claves TTL, que indican un tiempo de vida determinado, tras el que se eliminan a sí mismas, lo que resulta útil para evitar llenar las bases de datos de datos no necesarios; los contadores atómicos, para garantizar que las condiciones de la carrera no creen resultados incoherentes; y Lua, un lenguaje de scripts ligero pero potente.

Benefit_ElastiCache_replication

Redis utiliza una arquitectura maestro-esclavo y admite la replicación asíncrona mediante la que los datos se replican en numerosos servidores esclavos. De este modo, se logra una mejora en el desempeño de lectura (ya que las lecturas se pueden repartir entre servidores) y de recuperación cuando el servidor principal sufre un fallo.

Para proporcionar durabilidad, Redis admite las snapshots de un momento determinado (copiando el conjunto de datos de Redis en un disco) y la creación de un archivo de solo anexos (AOF) para almacenar cada uno de los cambios a los datos en un disco a medida que se producen. Ambos métodos facilitan la recuperación rápida de los datos de Redis si se produce un fallo.

Benefit_ElastiCache_languageSupport

Los desarrolladores de Redis tienen a su disposición más de cien clientes de código abierto. Entre los lenguajes admitidos se encuentran Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go y muchos otros.

Redis, situado "delante" de otra base de datos, crea una caché en memoria de alto rendimiento que reduce la latencia de acceso, incrementa el desempeño y alivia la carga de la base de datos relacional o NoSQL.

Redis es ideal para tareas de administración de sesiones. Simplemente utilice Redis como almacén de valores de clave rápido con TTL adecuado en las claves de sesión para administrar la información de la sesión. Normalmente, la administración de sesiones es necesaria para aplicaciones online, incluidos juegos, sitios web de comercio electrónico y plataformas de redes sociales.

Con la estructura de datos de conjuntos clasificados de Redis, los elementos se guardan en una lista ordenados por sus puntuaciones. Esto facilita la creación de clasificaciones dinámicas con el fin de mostrar quién va ganando en un juego o publicar los mensajes más populares, o cualquier otra aplicación en la que desee mostrar quién va a la cabeza.

Redis puede medir y, cuando sea necesario, limitar la velocidad de los eventos. Al utilizar un contador de Redis asociado con la clave de la API de un cliente, puede contar la cantidad de solicitudes de acceso dentro de un periodo de tiempo y tomar acción si se excede un límite. Los limitadores de velocidad se utilizan con frecuencia para limitar la cantidad de publicaciones de un foro, el uso de recursos y el impacto de los spammers.

La estructura de datos de listas de Redis facilita la implementación de una cola ligera y persistente. Las listas ofrecen operaciones atómicas, así como capacidades de bloqueo, por lo que resultan aptas para una variedad de aplicaciones que requieren un agente de mensajes fiable o una lista circular.

Redis es compatible con el estándar PUB/SUB con la correspondencia de patrones. Eso le permite a Redis abastecer salas de chat de alto desempeño, transmisiones de comentarios en tiempo real e intercomunicación en los servidores. También puede utilizar PUB/SUB para activar acciones a partir de eventos publicados.

Amazon ElastiCache para Redis es un servicio de estructura de datos en memoria compatible con Redis y totalmente administrado.