Compartir vía


Caducidad y expulsión (Almacenamiento en caché de AppFabric 1.1)

Los objetos almacenados en caché no permanecen en memoria de forma permanente en Microsoft AppFabric 1.1 para Windows Server. 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 caducidad 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 no se proporciona el valor de expiración de objeto en el momento en que el objeto se almacena en caché, se usarán los valores especificados en la configuración del clúster para esa caché, para determinar la duración del objeto en la memoria caché.

Cuando los objetos en caché se bloquean con fines de concurrencia, no se eliminarán de la memoria caché aunque lleguen a su caducidad. Cuando se desbloqueen, se eliminarán inmediatamente de la memoria caché si han llegado a su caducidad.

Para evitar la eliminación instantánea cuando se desbloquean objetos caducados, el método Desbloquear también permite extender la caducidad del objeto en caché. Para obtener más información acerca de los modelos y métodos de simultaneidad admitidos, vea Modelos de simultaneidad (Almacenamiento en caché de AppFabric 1.1) y Métodos de simultaneidad.

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. Para obtener un ejemplo de habilitación de la memoria caché mediante programación, vea Habilitar la memoria caché local de AppFabric 1.1. Para obtener un ejemplo sobre el uso de un archivo de configuración de la aplicación para habilitar la memoria caché local, vea Habilitación de la memoria caché local (XML).

TipSugerencia
Una vez se han almacenado los objetos en la memoria caché local, la aplicación sigue 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 usar 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 alcanzan el valor de tiempo de espera de objeto especificado en los valores de configuración del cliente de caché. Una vez alcanzan 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 cliente de caché 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.

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.

WarningAdvertencia
Para que la aplicación use notificaciones, se deben habilitar en una memoria caché con nombre. Use el parámetro NotificationsEnabled con los comandos New-Cache o Set-CacheConfig. Para obtener más información, vea Administración de caché con Windows PowerShell (AppFabric 1.1).

Expulsión

Para mantener la capacidad de la memoria disponible para la memoria caché en cada host de caché, AppFabric permite la expulsión de Usados menos recientemente (LRU). Se usan umbrales, denominados marcas de agua, para garantizar que la memoria se distribuye de manera uniforme por todos los hosts de caché del clúster.

Cuando el consumo de memoria del servicio de caché de un servidor de caché supera el umbral de marca de agua inferior, AppFabric empieza a expulsar objetos que ya han caducado.

Cuando el consumo de memoria supera el umbral de marca de agua superior, se expulsan objetos de la memoria, independientemente de si han caducado o no, hasta que el consumo de memoria vuelva a la marca de agua inferior. En consecuencia, es posible que se redirijan objetos de caché a otros hosts, para mantener una distribución óptima de la memoria.

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

El comportamiento de la caducidad y la expulsión se configura a nivel de caché con nombre, en los valores de configuración del clúster. Estos valores a nivel de caché pueden configurarse con la herramienta de administración de caché basada en Windows PowerShell. Para obtener más información, vea Administración de caché con Windows PowerShell (AppFabric 1.1).

Además, los métodos siguientes permiten sobrescribir 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 caducidad solo para el objeto que se agrega a la memoria caché.

  • Los métodos PutAndUnlock y Unlock proporciona sobrecargas que permiten extender la caducidad de un objeto después de desbloquearlo.

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

Independientemente de los valores de caducidad o expulsión, si se reinicia un clúster de caché, se vaciará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 es encuentran en la memoria caché. Esto se denomina frecuentemente modelo de programación cache-aside.

Vea también

Conceptos

Diagrama de la arquitectura física de AppFabric (Almacenamiento en caché de AppFabric 1.1)
Diagrama de la arquitectura lógica de almacenamiento en caché de AppFabric (Almacenamiento en caché de AppFabric 1.1)

  2012-03-05