En informática, una memoria caché es una capa de almacenamiento de datos de alta velocidad que almacena un subconjunto de datos, normalmente transitorios, de modo que las solicitudes futuras para dichos datos se sirven más rápido que si se debe acceder a los datos desde la ubicación de almacenamiento principal. El almacenamiento en caché permite reutilizar de forma eficaz los datos recuperados o calculados anteriormente. Los datos en una memoria caché suelen almacenarse en hardware de acceso rápido, como la memoria de acceso aleatorio (RAM) y también puede utilizarse junto con un componente de software. El objetivo principal de la caché es aumentar el desempeño de recuperación de datos de manera que se reduce la necesidad de acceder a la capa subyacente de almacenamiento, más lenta. Al intercambiar capacidad por velocidad, una memoria caché normalmente almacena un subconjunto de datos de forma transitoria, a diferencia de las bases de datos cuyos elementos suelen ser completos y duraderos.
Las cachés pueden aplicarse y aprovecharse en varias capas de la tecnología que incluyen los sistemas operativos, las capas de redes entre las que destacan las redes de entrega de contenido (CDN) y DNS, las aplicaciones web y las bases de datos.
Debido a los elevados porcentajes de solicitudes o IOPS (operaciones de entrada/salida por segundo) compatibles con RAM y motores en memoria, el almacenamiento en memoria ofrece un mayor desempeño en la obtención de datos y una reducción de costes a escala. Para mantener la misma escala con bases de datos tradicionales y hardware basado en discos, serían necesarios recursos adicionales. Estos recursos adicionales aumentan el coste y sin embargo no consiguen el bajo desempeño de latencia que ofrece una memoria en caché.
Se puede utilizar el almacenamiento en caché para reducir de manera significativa la latencia y mejorar las IOPS de muchas cargas de trabajo elevadas de aplicaciones de lectura, como, por ejemplo, portales de preguntas y respuestas, juegos, medios compartidos y redes sociales. La información en caché puede incluir los resultados de consultas a bases de datos, cálculos informáticos intensivos, solicitudes y respuestas a API e instrumentos web, como archivos HTML, JavaScript y de imágenes. Las cargas informáticas intensivas que manipulan conjuntos de datos, como motores de recomendación y simulaciones informáticas de elevado desempeño, también se benefician de una capa de datos en memoria que funcione como memoria caché. En estas aplicaciones, se debe acceder a conjuntos de datos de gran tamaño en tiempo real entre los clústeres de máquinas que pueden abarcar cientos de nodos. Debido a la velocidad del hardware subyacente, manipular estos datos en un almacén basado en disco es un cuello de botella importante para estas aplicaciones.
En un entorno informático distribuido, una capa de caché específica permite que los sistemas y las aplicaciones se ejecuten de manera independiente de la caché con sus propios ciclos de vida sin el riesgo de que afecte a la caché. La caché actúa como una capa central a la que se puede acceder desde diferentes sistemas con su propio ciclo de vida y topología arquitectónica. Esto resulta especialmente relevante en un sistema en el que los nodos de aplicaciones pueden escalarse de forma dinámica. Si la caché reside en el mismo nodo que la aplicación o los sistemas que la utilizan, el escalado puede afectar a la integridad de la caché. Además, cuando se utilizan cachés locales, solo se beneficia la aplicación local que consume los datos. En un entorno distribuido de caché, los datos pueden abarcar varios servidores de caché y almacenarse en una ubicación central que favorezca a todos los consumidores de dichos datos.

| Capa | Lado de cliente | DNS | Web | Apl. | Base de datos |
| Caso de uso | Aceleración de la recuperación de contenido web desde sitios web (navegador o dispositivo) | Resolución IP a dominio | Aceleración de la recuperación de contenido web desde servidores web o de aplicación. Gestión de sesiones web (lado del servidor) | Aceleración del desempeño de la aplicación y del acceso a los datos | Reducción de latencia asociada con solicitudes de consulta de la base de datos |
| Tecnologías | Encabezados de caché de HTTP, navegadores | Servidores de DNS | Encabezados de caché de HTTP, CDN, Proxys inversos, aceleradores web, almacenamientos de clave/valor | Almacenamiento de datos de clave-valor, cachés locales | Búferes de bases de datos, almacenamiento de datos de clave/valor |
| Soluciones | Específicas para navegador | Amazon Route 53 | Amazon CloudFront, ElastiCache for Redis, ElastiCache for Memcached, soluciones de los socios | Marcos de aplicación, ElastiCache for Redis, ElastiCache for Memcached, soluciones de los socios | ElastiCache for Redis, ElastiCache for Memcached |
Al implementar una capa de caché, es importante entender la validez de los datos que se almacenan en la caché. Una caché bien realizada provoca un elevado índice de visitas lo que supone que los datos estaban presentes cuando se buscaron. Un miss (falta) de la caché se produce cuando el dato buscado no estaba en la caché. Pueden aplicarse controles como, por ejemplo, el tiempo de vida (TTL) para que los datos caduquen en consecuencia. Otra consideración puede ser si el entorno de caché debe tener una alta disponibilidad, lo que puede conseguirse con motores en memoria como Redis. En algunos casos, se puede utilizar una capa en memoria como capa de almacenamiento de datos independiente a diferencia del almacenamiento en caché de datos desde una ubicación principal. En este caso, es importante definir un objetivo de tiempo de recuperación apropiado (RTO, el tiempo que se tarda en recuperarse de una interrupción) y objetivo de punto de recuperación (RPO, el último punto o transacción capturada en la recuperación) en los datos que residen en el motor en memoria para determinar si es adecuado. Pueden aplicarse varias estrategias y características de diseño de diferentes motores en memoria para satisfacer la mayoría de RTO y RPO.
Amazon ElastiCache es un servicio web que facilita la implementación, el uso y el ajuste de escala de una caché o un almacén de datos en memoria en la nube. El servicio mejora el rendimiento de las aplicaciones web, lo que permite recuperar información de almacenes de datos en memoria ágiles y administrados en lugar de depender totalmente de bases de datos basadas en disco, más lentas.
Descubra cómo puede implementar una estrategia de almacenamiento en caché con este documento técnico de almacenamiento de caché en memoria.


Dado que la memoria es bastante más rápida que el disco (magnético o SSD), leer datos de caché en memoria es extremadamente rápido (submilisegundos). Este acceso a los datos significativamente más rápido mejora el rendimiento general de la aplicación.

Una sola instancia de caché puede proporcionar cientos de miles de IOPS (operaciones de entrada/salida por segundo), lo que potencialmente podría sustituir un determinado número de instancias de bases de datos y reducir el coste total. Esto resulta especialmente importante si la base de datos principal se cobra por rendimiento. En esos casos, el ahorro en el precio podría ser de decenas de puntos porcentuales.

Al redirigir partes importantes de la carga de lectura de la base de datos de back-end a la capa en memoria, el almacenamiento en caché puede reducir la carga en la base de datos, y protegerla de un rendimiento escaso bajo carga, o incluso de errores cuando se producen picos.

Un reto común en las aplicaciones modernas es gestionar los tiempos de los picos de uso de la aplicación. Entre los ejemplos se incluyen aplicaciones sociales durante la Super Bowl o el día de las elecciones, los sitios web de comercio electrónico en Black Friday, etc. El aumento de carga de la base de datos genera latencias más altas para obtener los datos, de forma que el rendimiento de las aplicaciones generales se hace impredecible. La utilización de una caché en memoria de alto rendimiento pueden eliminar este problema.

En muchas aplicaciones, es probable que se acceda con una frecuencia superior respecto a los otros a un pequeño subconjunto de datos, como, por ejemplo, el perfil de un famoso o un producto popular. Esto puede dar lugar a puntos calientes en la base de datos y pueden requerir una provisión excesiva de los recursos de la base de datos en función de los requisitos de rendimiento para los datos que se utilizan con más frecuencia. El almacenamiento de claves comunes en una memoria en caché elimina la necesidad de aprovisionar en exceso al tiempo que ofrece un rendimiento rápido y predecible para los datos a los que se accede con mayor frecuencia.

Además de baja latencia, los sistemas de memoria también ofrecen velocidades de solicitud mucho más elevadas (IOPS) respecto a una base de datos basada en disco que se pueda comparar. Una sola instancia utilizada como una caché lateral distribuida puede atender cientos de miles de solicitudes por segundo.
Es muy fácil comenzar a utilizar el almacenamiento en caché en la nube con un servicio totalmente gestionado como Amazon ElastiCache. Se elimina la complejidad de la configuración, gestión y administración de la caché, y le libera de ellas para que pueda dedicarse a lo que aporta valor a su organización. Inscríbase hoy para Amazon ElastiCache.
Recursos adicionales: Documento técnico sobre Estrategias Uso de almacenamiento en caché de datos usando Redis | Documento técnico sobre el almacenamiento en caché en memoria de Amazon ElastiCache | Amazon CloudFront |




















