Partager via


Expiration et éviction (mise en cache d'AppFabric 1.1)

Dans Microsoft AppFabric 1.1 pour Windows Server, les objets mis en cache ne restent pas en mémoire de façon permanente. Outre leur suppression explicite du cache à l'aide de la méthode Remove, les objets mis en cache peuvent également expirer ou être exclus par le cluster de cache.

Expiration

L'expiration du cache permet au cluster de cache de supprimer automatiquement des objets mis en cache. Lors de l'utilisation de la méthode Put ou Add, une valeur facultative de délai d'expiration de l'objet peut être définie pour un objet mis en cache spécifique, qui va déterminer sa durée de conservation dans le cache. Si la valeur du délai d'expiration de l'objet n'est pas fournie au moment de la mise en cache de celui-ci, les valeurs spécifiées dans les paramètres de configuration du cluster du cache nommé sont utilisées pour déterminer la durée de vie de l'objet dans le cache.

Lorsque les objets mis en cache sont verrouillés à des fins d'accès concurrentiel, ils ne sont pas supprimés du cache même s'ils ont dépassé leur délai d'expiration. Si celui-ci est effectivement dépassé, dès leur déverrouillage, ils sont immédiatement supprimés du cache.

Pour éviter cette suppression instantanée lors du déverrouillage des objets expirés, la méthode Unlock prend également en charge l'extension du délai d'expiration de l'objet mis en cache. Pour plus d'informations sur les modèles et méthodes d'accès concurrentiel pris en charge, consultez les rubriques Modèles de concurrence (mise en cache d'AppFabric 1.1) et Méthodes d'accès concurrentiel.

Invalidation du cache local

Il existe deux types complémentaires d'invalidation pour le cache local : l'invalidation basée sur un délai d'expiration et l'invalidation basée sur une notification. Pour obtenir un exemple d'activation du cache local par programme, consultez la rubrique Activation du cache local d'AppFabric 1.1. Pour obtenir un exemple d'utilisation du fichier de configuration d'application pour activer le cache local, consultez la rubrique Activation du cache local (XML).

Conseil

Une fois les objets stockés dans le cache local, votre application continue à les utiliser jusqu'à leur invalidation, qu'ils soient mis à jour par un autre client sur le cluster de cache ou non. Pour cette raison, il est recommandé d'utiliser le cache local pour les données qui changent rarement.

Invalidation basée sur un délai d'expiration

Une fois les objets téléchargés vers le cache local, ils y restent jusqu'à atteindre la valeur de délai d'expiration spécifiée dans les paramètres de configuration du client de cache. Une fois que les objets ont atteint la valeur de délai d'expiration, ils sont invalidés de sorte que chaque objet peut être actualisé à partir du cluster de cache la prochaine fois qu'il est demandé.

Invalidation basée sur une notification

Si le cache local de votre client de cache est activé, vous pouvez également utiliser les notifications de cache pour invalider automatiquement les objets mis en cache localement. En réduisant la durée de vie de ces objets selon vos besoins, vous pouvez réduire les risques que votre application utilise des données obsolètes.

Lorsque vous utilisez les notifications de cache, votre application interroge régulièrement le cluster de cache pour vérifier si de nouvelles notifications sont disponibles. Par défaut, cette fréquence d'interrogation est de 300 secondes. Elle est spécifiée en unités de secondes dans les paramètres de configuration de l'application. Remarquez que même avec une invalidation basée sur une notification, les délais d'expiration s'appliquent aux éléments du cache local. L'invalidation basée sur une notification est donc complémentaire de l'invalidation basée sur un délai d'expiration.

Avertissement

Pour que votre application utilise les notifications, vous devez activer ces dernières sur un cache nommé. Utilisez le paramètre NotificationsEnabled avec la commande New-Cache ou Set-CacheConfig. Pour plus d’informations, consultez la rubrique Administration du cache avec Windows PowerShell (AppFabric 1.1).

Éviction

Pour que les fonctionnalités de mise en mémoire soient disponibles pour le cache de chaque hôte de cache, AppFabric prend en charge l'éviction LRU (dernier récemment utilisé). Des seuils, nommés « limites », permettent de s'assurer que la mémoire est répartie de manière égale dans tous les hôtes de cache du cluster.

Lorsque la consommation de mémoire du service cache d'un serveur de cache dépasse la limite inférieure, AppFabric commence à exclure les objets qui ont déjà expiré.

De même, lorsque la consommation de mémoire dépasse la limite supérieure, les objets sont exclus de la mémoire, qu'ils soient expirés ou non, jusqu'à ce que la consommation de mémoire atteigne la limite inférieure. Par la suite, les objets mis en cache peuvent être réacheminés vers d'autres hôtes pour conserver une répartition optimale de la mémoire.

Spécification des paramètres d'expiration et d'éviction

Les comportements d'expiration et d'éviction sont configurés au niveau du cache nommé dans les paramètres de configuration du cluster. Vous pouvez configurer ces derniers à l'aide de l'outil d'administration du cache basé sur Windows PowerShell. Pour plus d’informations, consultez la rubrique Administration du cache avec Windows PowerShell (AppFabric 1.1).

En outre, les méthodes suivantes permettent de remplacer les paramètres par défaut du cache :

  • Les méthodes Add et Put fournissent des surcharges qui permettent de spécifier une valeur de délai d'expiration uniquement pour les objets ajoutés au cache.

  • Les méthodes PutAndUnlock et Unlock fournissent des surcharges qui permettent de prolonger le délai d'expiration d'un objet après son déverrouillage.

  • La méthode ResetObjectTimeout permet de prolonger explicitement la durée de vie d'un objet, en remplaçant les paramètres d'expiration du cache.

Indépendamment des paramètres d'expiration ou d'éviction, si un cluster de cache est redémarré, tous les objets mis en cache sont purgés. Si les données sont introuvables dans le cache, le code de votre application doit recharger celui-ci à partir d'une source de données. Cette opération est également appelée « mode de programmation de type cache-aside ».

Voir aussi

Concepts

Diagramme de l'architecture physique de mise en cache d'AppFabric (mise en cache d'AppFabric 1.1)
Diagramme de l'architecture logique de mise en cache d'AppFabric (mise en cache d'AppFabric 1.1)

  2012-03-05