This is the Trace Id: 42ed140ff466e693cd13e49c77caa889
Saltar al contenido principal
Azure
fondo degradado

¿Qué es el almacenamiento en caché?

Obtenga información sobre cómo el almacenamiento en caché mejora el rendimiento y la eficacia del sistema.

Significado de almacenamiento en caché

El almacenamiento en caché conserva copias reutilizables de los datos a los que se accede con frecuencia en memoria, para que las aplicaciones eviten llamadas repetidas a la base de datos y devuelvan resultados más rápido.

Puntos clave

  • El almacenamiento en caché almacena los datos solicitados con frecuencia en memoria rápida para que las aplicaciones puedan responder más rápido sin llegar a la base de datos principal cada vez.
  • Una solicitud típica comprueba primero la memoria caché y, después, extrae del almacén de origen en caso de error y actualiza la memoria caché mediante patrones comunes de lectura y escritura.
  • Bien hecho, el almacenamiento en caché reduce la latencia y la carga de back-end, ayuda a controlar las ráfagas de tráfico y admite escenarios comunes como sitios web, API y estado de sesión.
  • El almacenamiento en caché aparece en varias capas y funciona mejor cuando se eligen datos estables con mucha actividad de lectura y se mantiene una fuente duradera de veracidad con un plan de reserva.

Descripción del almacenamiento en caché

¿Qué es una memoria caché?

El almacenamiento en caché es la práctica de almacenar datos de clave-valor en memoria temporal (como un lenguaje de consulta estructurado no relacional de base de datos (NoSQL)) para que las aplicaciones puedan recuperarlos más rápido de lo que podrían obtener del almacenamiento convencional. En las arquitecturas de almacenamiento en la nube, donde las solicitudes suelen cruzar las redes y los servicios compartidos táctiles, el almacenamiento en caché puede ayudar a mantener los tiempos de respuesta bajos y reducir el trabajo repetido.

¿Cómo funciona el almacenamiento en caché?

La mayoría de los sistemas mantienen un "origen de verdad" duradero (una base de datos) para conjuntos de datos completos y, después, mantienen una memoria caché para los subconjuntos transitorios que se leen con frecuencia. Cuando llega una solicitud, la aplicación comprueba primero la memoria caché; si los datos están allí, se devuelven rápidamente sin volver a consultar el back-end. Los desarrolladores también almacenan en caché los datos procesados y los reutilizan para atender solicitudes más rápido que las consultas estándar a bases de datos relacionales,bases de datos SQL, o bases de datos PostgreSQLde código abierto.

Principios clave detrás del almacenamiento en caché

1. Almacenar en caché lo que lee mucho

Los buenos candidatos incluyen datos leídos repetidamente y datos que cambian con poca frecuencia (por ejemplo, información de productos y precios o recursos estáticos compartidos que son costosos de construir).

2. Almacenar en caché los resultados del trabajo repetido

Si una operación transforma datos o realiza un cálculo complicado, almacenar en caché el resultado puede evitar volver a calcularlo para solicitudes posteriores.

3. Uso de capas de caché cuando sea necesario

Los desarrolladores usan cachés de varios niveles (“capas” de caché) para almacenar diferentes tipos de datos en cachés independientes en función de la demanda. La adición de una o varias capas de caché puede mejorar el rendimiento y la latencia en una capa de datos.

4. Mantener el estado de sesión cerrado para las aplicaciones con capacidad de respuesta

Los almacenes en memoria se suelen usar para contener grandes volúmenes de datos de sesión, como entradas de usuario, entradas del carro de la compra o preferencias de personalización durante períodos cortos. En el caso de las aplicaciones con estado, los equipos también almacenan el estado de sesión en la memoria caché para que la aplicación pueda ser sin estado.

Impacto en el rendimiento del sistema

El almacenamiento en caché puede mejorar el rendimiento de varias maneras concretas:

  • Leer datos de una memoria caché en memoria es más rápido que acceder a los datos de un almacén controlado por disco.
  • Menos consultas pueden reducir la carga y limitar la necesidad de escalar la infraestructura de base de datos, lo que también puede reducir los costes.
  • Las capas de caché pueden mejorar el rendimiento y la latencia, y las memorias caché en memoria pueden ayudar a mitigar la latencia durante los picos de uso.
  • Una instancia de caché puede controlar millones de solicitudes por segundo, lo que ofrece un rendimiento que muchas bases de datos no pueden coincidir.

¿Cómo funciona el almacenamiento en caché?

El flujo básico: caché y almacén de datos de origen

En muchos diseños de nube, una memoria caché se encuentra junto a un almacén de datos principal (por ejemplo, una base de datos). El almacén principal contiene el conjunto de datos completo y duradero en el servidor en la nube, mientras que la memoria caché mantiene un subconjunto temporal más pequeño que es más rápido de leer.

Una configuración común es una capa de caché independiente o una memoria caché que reside en el nivel de aplicación o base de datos, elegida en función de dónde necesite lecturas rápidas.

Capas de caché: más de una "ruta de acceso rápida"

Algunos sistemas usan el almacenamiento en caché de varios niveles ("capas de caché") por lo que diferentes tipos de datos residen en diferentes cachés en función de la demanda. La adición de una o varias capas de caché puede mejorar el rendimiento y la latencia de la capa de datos y reducir el coste general reduciendo la carga de back-end.

Qué se almacena en caché (y por qué)

Los equipos suelen almacenar en caché los datos que se encuentran en algunos cubos:

  • Datos que se leen con frecuencia (sobre todo si cambian con poca frecuencia), como información de productos o precios, y recursos estáticos compartidos que son costosos de generar.
  • Cálculos repetidos, en los que una operación transforma datos o realiza un cálculo complicado; almacenar en caché el resultado evita volver a realizar el mismo trabajo para solicitudes posteriores.
  • Estado de sesión para aplicaciones con estado, donde almacenar el estado de sesión en caché puede ayudar a que la capa de aplicación no tenga estado.

Patrones comunes de almacenamiento en caché (flujos de trabajo de lectura y escritura)

Hay varias formas estándar en que las aplicaciones leen y escriben en una memoria caché. Estos son los patrones más comunes y lo que significan en la práctica.

  • Cache-aside: carga datos a demanda desde un almacén de datos.
  • Lectura directa: lectura de la memoria caché y captura la memoria caché del almacén de datos si es necesario.
  • Escritura directa: escribe en la memoria caché y se vuelve a sincronizar con el almacén de datos de forma sincrónica.
  • Reescritura (escritura diferida): escribe en la memoria caché y vuelve a escribir en el almacén de datos en lotes.
  • Escritura alternativa: escriba en el almacén de datos y lea desde la memoria caché; la memoria caché se actualiza a petición.

Por qué esto reduce la carga y acelera las cosas

El uso de capas de caché puede mejorar el rendimiento y la latencia al atender solicitudes comunes desde la memoria caché en lugar de consultar repetidamente el almacén back-end. Esto puede reducir la necesidad de escalar la infraestructura de base de datos porque, en primer lugar, hay menos solicitudes que llegan a la base de datos.

En el caso de las aplicaciones con picos de uso, las memorias caché en memoria pueden ayudar a mitigar la latencia manteniendo los datos solicitados con frecuencia cerca de donde se usan.

Guía rápida: selección de un patrón

Úselos como punto de partida al elegir un flujo de trabajo:

  • Prefiera cache-aside cuando la aplicación puede decidir qué almacenar y cuándo actualizarla.
  • Prefiera la lectura directa cuando quiera que la memoria caché controle la captura del almacén de datos "si es necesario".
  • Considere la posibilidad de escribir a través o de reescritura cuando el comportamiento de escritura sea importante y desee un enfoque de resincronización definido.

Ventajas y aplicaciones del almacenamiento en caché

Respuestas más rápidas con menos trabajo de back-end

El almacenamiento en caché mejora el rendimiento de la aplicación porque la lectura desde una caché en memoria es más rápida que la lectura desde un almacén de datos controlado por disco. Cuando se atienden más solicitudes desde la memoria caché, los sistemas envían menos consultas a las bases de datos back-end, lo que puede reducir la necesidad de escalar la infraestructura de base de datos y reducir los costes relacionados.

Lo que se obtiene a menudo del almacenamiento en caché
  • Menor latencia para lecturas comunes, ya que los datos solicitados con frecuencia proceden de una capa más rápida.
  • Se ha reducido la carga y el coste de la base de datos, ya que el almacenamiento en caché genera menos consultas de base de datos y menos presión para aprovisionar en exceso las instancias de base de datos.
  • Rendimiento más predecible, ya que una memoria caché puede controlar un volumen de solicitudes muy alto en comparación con muchas bases de datos.
  • Control más fluido de los picos de tráfico, ya que las memorias caché en memoria pueden mitigar la latencia durante períodos de alto rendimiento.

Mejor uso de los recursos de proceso y almacenamiento

El almacenamiento en caché ayuda a cortar el trabajo repetido. Los datos que se leen repetidamente (o que son costosos de construir) se pueden almacenar una vez y reutilizarse. Si una operación realiza un cálculo complicado o transforma los datos, almacenar en caché el resultado reduce el cálculo repetido para las solicitudes posteriores.

Candidatos comunes de "caché buena"
  • Datos que cambian con poca frecuencia (por ejemplo, información de productos y precios).
  • Recursos estáticos compartidos que son costosos de construir.
  • Resultados de operaciones que se calculan repetidamente.

Aplicaciones del mundo real (donde se muestra el almacenamiento en caché)

Sitios web: cargas de página más rápidas y menos viajes de ida y vuelta

Muchos sitios almacenan en caché la salida de página (como HTML y scripts de cliente) para que el servidor pueda devolver la salida almacenada en caché en lugar de volver a ejecutar el código de página cada vez. El almacenamiento en caché también admite escenarios multimedia web a través de cachés web y almacenamiento en caché de red, como redes de entrega de contenido (CDN).

Usos típicos en sitios web
  • Almacenar en caché la salida de página completa para las vistas de repetición.
  • Almacene en caché los recursos estáticos a través del almacenamiento en caché de red/CDN.
Aplicaciones y API: lecturas más rápidas para datos compartidos

Las aplicaciones suelen almacenar subconjuntos transitorios de datos en una memoria caché para una recuperación rápida, mientras que la base de datos principal conserva el conjunto de datos duradero completo. Almacenar en caché los datos procesados y reutilizarlos puede atender las solicitudes más rápido que las consultas de base de datos estándar.

Patrones de aplicación comunes
  • Almacene en caché los datos de referencia leídos con frecuencia (como los precios) para reducir las llamadas repetidas a la base de datos.
  • Almacene en caché los resultados calculados para evitar la repetición de trabajos costosos.
Servidores y servicios: escalado de lecturas y suavizado de picos

A menudo, los equipos agregan una o varias capas de caché para mejorar el rendimiento y la latencia, atendiendo consultas comunes desde la memoria caché y reduciendo la carga de la base de datos. Las memorias caché en memoria pueden ayudar cuando aumentan los picos de uso y la demanda de rendimiento, lo que mitiga la latencia durante esos períodos.

Donde esto es más útil
  • Puntos de conexión de lectura alta en los que se solicitan las mismas claves a menudo.
  • Sistemas que ven ráfagas periódicas de tráfico.
Sistemas empresariales: estado de sesión y datos operativos compartidos

El almacenamiento en caché se suele usar para almacenar grandes volúmenes de datos de sesión de corta duración (como la entrada del usuario o las preferencias de personalización) en un almacén en memoria. Algunos equipos también almacenan el estado de sesión en la memoria caché para que las aplicaciones con estado puedan mantener el nivel de aplicación sin estado. En el caso de los sistemas operativos, los datos que cambian con poca frecuencia, como la información de productos y precios, son un objetivo de almacenamiento en caché común.

Ejemplos que se pueden asignar a cargas de trabajo empresariales
  • Datos de sesión para aplicaciones web y móviles (corta duración, gran volumen).
  • Lea con frecuencia los datos de referencia operativa (precios, recursos compartidos).

Tipos de caché

El almacenamiento en caché se muestra en varias capas entre una aplicación y sus datos, incluidos los enfoques del lado cliente y del lado servidor.

Caché del explorador (del lado cliente)

Una memoria caché del explorador almacena copias de recursos estáticos en el dispositivo de un usuario para que las visitas repetidas puedan reutilizar esos archivos en lugar de volver a descargarlos.

Casos de uso comunes
  • Recursos de sitio estáticos, como imágenes, archivos CSS y archivos JavaScript.
  • Reducción de los recorridos de ida y vuelta al servidor de origen para los recursos capturados previamente.

Caché del lado servidor

El almacenamiento en caché del lado servidor se produce en los procesos que ejecutan servicios empresariales de forma remota, en lugar de hacerlo en el dispositivo del usuario final. Las memorias caché del lado servidor suelen ser privadas (locales a una instancia de aplicación) o compartidas (usadas por muchas instancias de la aplicación).

Casos de uso comunes
  • Caché privada en memoria dentro de un único proceso para cantidades reducidas de datos estáticos.
  • Servicio de caché compartida para que varias instancias de la aplicación lean los mismos valores almacenados en caché y eviten tener “versiones diferentes” entre instancias.
  • Datos que se leen con frecuencia, pero que se modifican con poca frecuencia (por ejemplo, datos de referencia de productos y precios).

Caché de CDN

Una red CDN almacena en caché el contenido de los servidores perimetrales más próximos a los usuarios finales, por lo que las solicitudes no siempre vuelven al origen. A diferencia de una caché del explorador (un usuario), se comparte una caché de CDN; la solicitud de un usuario puede rellenar el contenido que otro usuario recibe más adelante.

Casos de uso comunes
  • Entrega compartida de contenido almacenable en caché desde ubicaciones perimetrales para reducir las solicitudes de origen.
  • Recursos estáticos que se benefician de ser atendidos cerca de los usuarios (los mismos tipos de recursos que los exploradores almacenan en caché, pero que se comparten entre los usuarios).

Caché de CPU/memoria

El almacenamiento en caché no es solo un patrón de informática en la nube, sino que también lo usan las capas de hardware y memoria.

La memoria caché de CPU es un área de memoria pequeña y rápida cerca (o en) del procesador que almacena copias de los datos usados con frecuencia e instrucciones para reducir el tiempo invertido en esperar en la memoria principal.

La memoria caché (en memoria) es el tipo de caché de software más sencillo: un almacén en memoria almacenado en el espacio de direcciones de un único proceso y al que ese proceso accede directamente.

Casos de uso comunes
  • Caché de CPU: acceso repetido a las mismas instrucciones o datos sin viajes frecuentes a la memoria principal.
  • Caché en memoria: lecturas rápidas de grandes cantidades de datos relativamente estáticos dentro de un servicio en ejecución.

Almacenamiento en caché distribuido

Una caché distribuida abarca varios servidores para que la memoria caché pueda aumentar y la capacidad transaccional más allá de una máquina. Muchos servicios de caché compartida usan un clúster de servidores y distribuyen los datos almacenados en caché en todo el clúster; escalar la memoria caché puede ser tan sencillo como agregar más servidores. Algunos diseños distribuidos también almacenan en caché las capas, por lo que un error en una capa extrae de un proveedor ascendente y, a continuación, almacena el resultado localmente para la siguiente solicitud.

Casos de uso comunes
  • Un nivel de caché compartida para varias instancias de aplicación y máquinas.
  • Cargas de trabajo que necesitan capacidad de caché y rendimiento que superen un único host.
  • Configuraciones de caché superpuestas en las que faltan capturas desde la cadena ascendente y, a continuación, mantienen una copia local para las solicitudes posteriores.

Introducción al almacenamiento en caché

Por qué el almacenamiento en caché sigue siendo importante

El almacenamiento en caché mantiene los datos a los que se accede con frecuencia más cerca de donde se usan, lo que puede mejorar los tiempos de respuesta y ayudar a un sistema a controlar más solicitudes simultáneas. También puede reducir la contención en el almacén de datos original, como cuando una base de datos tiene conexiones limitadas.

En las aplicaciones distribuidas, el almacenamiento en caché suele producirse en más de un lugar: en el lado cliente (como un explorador) y en el lado servidor (en una aplicación o servicio de caché compartido).

Una forma práctica de comenzar

Empiece poco a poco y céntrese en los datos que le proporcionan la devolución más clara:

  • Almacenar en caché datos de lectura intensiva y lenta para capturar que cambian con poca frecuencia (por ejemplo, datos de referencia).
  • Decida cuándo entran los datos en la memoria caché:
    • A petición después de la primera solicitud, por lo que solo se almacena lo que se usa realmente.
    • Rellene previamente (inicialice) algunos elementos al inicio si sabe que se solicitarán antes, mientras observa la carga de inicio en el almacén original.
  • Elija un patrón que pueda administrar. El patrón cache-aside es común y su guía resalta cómo afectan a los resultados la expiración, la expulsión y la coherencia.

Mantener actualizados los datos almacenados en caché (y el sistema resistente)

Normalmente, una memoria caché contiene copias de datos de un almacén principal, por lo que la actualización requiere atención:

  • Use directivas de expiración para limitar el tiempo que los datos pueden permanecer en la memoria caché antes de actualizarse.
  • Observe el comportamiento de expulsión cuando las memorias caché se llenan (muchos sistemas desalojan los elementos usados menos recientemente de forma predeterminada).
  • No trate la memoria caché como la única página principal de los datos críticos. Mantenga el origen de la verdad en el almacenamiento persistente para que el sistema pueda continuar si la memoria caché no está disponible.
  • Planee una ruta de acceso de reserva al almacén de datos original si no se puede acceder a la memoria caché y vuelva a rellenarse a medida que se produzcan lecturas.

El almacenamiento en caché es un bloque de creación básico para sistemas modernos porque se ajusta a muchas arquitecturas, desde servicios únicos hasta aplicaciones distribuidas y entrega perimetral. Para un proveedor en la nube de caché en memoria administrado, puede explorar Azure.

fondo degradado
Recursos

Recursos

Capacitación
Recursos de Azure
Explore la tecnología de desarrollo más reciente y aprenda nuevas aptitudes.
Educación
Recursos para estudiantes de desarrollo
Adquiera aptitudes para impulsar su carrera profesional y lograr un impacto positivo en el mundo.
Eventos
Seminarios web y eventos de Azure
Adquiere nuevos conocimientos, descubre nuevas tecnologías y establece contacto con tu comunidad. Puedes participar digitalmente o presencialmente.
Preguntas frecuentes

Preguntas más frecuentes

  • El almacenamiento en caché mantiene los datos a los que se accede con frecuencia en memoria rápida para que las aplicaciones puedan devolver resultados rápidamente sin llegar a la base de datos principal cada vez. Esto reduce la latencia y la carga de back-end, lo que ayuda a los sistemas a controlar más solicitudes simultáneas.
  • El almacenamiento en caché mejora el rendimiento al servir datos solicitados con frecuencia desde una memoria rápida, lo que reduce la latencia, reduce la carga y el coste de la base de datos, admite un gran volumen de solicitudes y ayuda durante los picos de tráfico.
  • Un ejemplo es el almacenamiento en caché de resultados: un servidor web almacena la salida representada de una página (scripts HTML y de cliente) en memoria y, a continuación, sirve esa salida almacenada en caché en las visitas repetidas en lugar de volver a ejecutar el código de página.
  • Una memoria caché almacena un subconjunto temporal más pequeño de datos para un acceso rápido, mientras que una base de datos o almacenamiento contiene el conjunto de datos completo y duradero para la retención a largo plazo. Si se pierden datos almacenados en caché, la copia permanente sigue estando en la base de datos; las memorias caché de no están diseñadas para ser el almacén autoritativo de los datos críticos.