Exportar (0) Imprimir
Expandir todo

Expiración y expulsión (In-Role Cache para Azure Cache)

Actualizado: noviembre de 2012

Caché de Microsoft Azure no conserva permanentemente en la memoria los objetos en caché. Además de quitarse explícitamente de la memoria caché mediante el método Remove, los objetos en caché también pueden caducar o ser expulsados por el clúster de caché.

Expiración

La expiración de caché permite al clúster de caché quitar automáticamente los objetos almacenados en caché de la memoria caché. Cuando se usan los métodos Put o Add, se puede establecer un valor opcional de expiración de objeto, para cada objeto en caché, que determinará durante cuánto tiempo permanecerá en caché. Si el valor de tiempo de espera del objeto no se proporciona en el momento en que el objeto se almacena en caché, este usa el tiempo de expiración predeterminado. Este valor predeterminado depende de si usa roles de Caché o de Microsoft Azure, o si usa Shared Caching.

Cuando se usa Caché basado en roles, dispone de tres opciones para la expiración:

 

Tipo de expiración Descripción

ninguna.

La expiración está deshabilitada. Los elementos permanecen en la memoria caché hasta que se expulsen o se reinicie el clúster de caché.

Absoluto

Los elementos expiran en un período de tiempo establecido desde el momento de su creación.

Deslizante

Los elementos expiran en un período de tiempo establecido desde el momento de su último acceso. Cada vez que se obtiene acceso al objeto, se restablece la ventana de tiempo deslizante. De este modo, los elementos que se usan con frecuencia se conservan en la memoria caché durante más tiempo.

noteNota
Es importante tener en cuenta el comportamiento de la expiración Deslizante cuando se usa en combinación con caché local. Si un elemento se lee de la memoria caché local, no se obtiene acceso al objeto en el clúster de caché. Por lo tanto, es posible que el elemento expire en el servidor, incluso si se está leyendo de forma local.

En Shared Caching, la expiración es siempre Absoluto y no hay forma de establecer un tiempo de expiración predeterminada. Los elementos de Shared Caching expiran después de 48 horas. No obstante, puede usar los métodos Put y Add para establecer tiempos de expiración explícitos en código. Tenga en cuenta que los proveedores ASP.NET usan automáticamente estas sobrecargas para ofrecer tiempos de espera explícitos al caching de resultados y al estado de la sesión. En cualquier caso, cuando el tamaño de caché supera los límites de la oferta Shared Caching, se expulsan los elementos menos usados recientemente de la memoria caché.

Cuando los objetos en caché se bloquean con fines de concurrencia, no se eliminarán de la memoria caché aunque hayan caducado. Cuando se desbloqueen, se quitarán inmediatamente de la memoria caché si han caducado.

Para evitar la eliminación instantánea cuando se desbloquean objetos caducados, el método Unlock también permite extender la expiración del objeto en caché.

Invalidación de la memoria caché local

Hay dos tipos complementarios de invalidación de la memoria caché local: invalidación basada en tiempo de espera e invalidación basada en notificación.

TipSugerencia
Una vez se han almacenado los objetos en la memoria caché local, la aplicación puede seguir usando estos objetos hasta que se invaliden, independientemente de si otro cliente los ha actualizado en el clúster de caché o no. Por esta razón, es mejor habilitar la memoria caché local para datos que no se modifican con frecuencia.

Invalidación basada en tiempo de espera

Una vez los objetos se han descargado a la memoria caché local, permanecen allí hasta que alcancen el valor de tiempo de espera de objeto especificado en los valores de configuración del cache client. Una vez que alcancen este valor de tiempo de espera, los objetos se invalidan, de modo que pueden actualizarse desde el clúster de caché la próxima vez que se solicite.

Invalidación basada en notificación

Si el cache client ha habilitado la memoria caché local, también se pueden usar notificaciones de caché para invalidar automáticamente los objetos almacenados en caché local. Al reducir la vida útil de estos objetos según las necesidades, se puede minimizar la posibilidad de que la aplicación use datos obsoletos.

noteNota
No se admiten las notificaciones en Shared Caching.

Cuando se usan notificaciones de caché, la aplicación comprueba con el clúster de caché, a intervalos periódicos, si hay nuevas notificaciones disponibles. Este intervalo, denominado intervalo de sondeo, se produce cada 300 segundos de forma predeterminada. El intervalo de sondeo se especifica en unidades de segundos en las opciones de configuración de la aplicación. Tenga en cuenta que, con la invalidación basada en notificación, se siguen aplicando tiempos de espera a los elementos de la memoria caché local. De ese modo, la invalidación basada notificación es complementaria a la invalidación basada en tiempo de espera.

Para obtener más información y ejemplos, consulte Caché local (In-Role Cache para Azure Cache).

Expulsión

Para mantener la capacidad de la memoria disponible para la memoria caché en cada host de caché, se permite la expulsión de elementos menos usados recientemente (LRU). Los umbrales se usan para garantizar que la memoria se distribuye de manera uniforme entre todos los hosts de caché del clúster. Este umbral se determina según dos factores: la cantidad de memoria física disponible en cada equipo y el porcentaje de memoria caching reservada en cada equipo.

Cuando el consumo de memoria supera el umbral de memoria, los objetos se desalojan de la memoria, independientemente de si han expirado o no, hasta que se libera la presión de memoria. En consecuencia, es posible que se redirijan objetos de caché a otros equipos del clúster de caché para mantener una distribución óptima de la memoria.

WarningAdvertencia
Si deshabilita la expulsión, corre el riesgo de que se produzcan limitaciones. En esta condición, la memoria ha superado el umbral, pero no hay posibilidad de aliviar el almacenamiento en memoria. Los clientes que intenten agregar elementos a la memoria caché en este estado recibirán una excepción hasta que se resuelva este estado. Tenga en cuenta que Shared Caching no admite la deshabilitación de la expulsión en una memoria caché.

Especificación de la configuración de la expiración y expulsión

El comportamiento de la expiración y la expulsión se configura en el nivel de caché con nombre, en los valores de configuración del clúster.

Los métodos siguientes permiten invalidar los valores predeterminados de la memoria caché:

  • Los métodos Add y Put proporcionan sobrecargas que permiten especificar un valor de tiempo de espera de expiración solo para el objeto que se agrega a la memoria caché.

  • Los métodos PutAndUnlock y Unlock proporcionan sobrecargas que permiten extender la expiración de un objeto después de desbloquearlo.

  • El método ResetObjectTimeout permite extender explícitamente la duración de un objeto, invalidando los valores de expiración de la memoria caché.

Independientemente de los valores de expiración o expulsión, si se reinicia un clúster de caché, se borrarán todos los objetos de la memoria caché. El código de aplicación debe recargar la memoria caché a partir del origen de datos, si los datos no se encuentran en la memoria caché. Esto se denomina frecuentemente modelo de programación cache-aside.

Vea también

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft