Expiration et éviction pour le service de cache géré Azure
Important
Microsoft recommande tous les nouveaux développements d’utiliser le Cache Redis Azure. Pour obtenir de la documentation et des conseils actuels sur le choix d’une offre Azure Cache, consultez Quelle offre Azure Cache est adaptée à moi ?
Microsoft Azure Cache ne conserve pas définitivement les objets mis en cache en mémoire. En plus d’être explicitement supprimés du cache à l’aide de la méthode Remove , les objets mis en cache peuvent également expirer ou être supprimés par le cache.
Expiration
L'expiration du cache permet au 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, l'objet mis en cache utilise le délai d'expiration par défaut. L’heure par défaut pour Service de cache géré est de dix minutes.
La Stratégie d'expiration fonctionne en association avec le paramètre Temps (min) pour déterminer le moment où les éléments mis en cache expirent. Ces comportements sont sont configurés au niveau du cache nommé dans le portail de gestion sous l'onglet Configuration de Cache.
Il existe trois types de stratégies d'expiration : Absolu, Décalé, et Jamais.
Stratégie d'expiration | Description |
---|---|
Jamais |
L'expiration est désactivée. Les éléments restent dans le cache jusqu'à leur éviction. Lorsque Jamais est spécifié, Temps (min) doit être défini sur 0. |
Absolute |
L'intervalle d'expiration spécifié par Temps (min) commence lors de l'ajout d'un élément au cache. Lorsque l'intervalle spécifié par Temps (min) s'est écoulé, l'élément expire. |
Glissante |
L'intervalle d'expiration spécifié par Temps (min) est réinitialisé lors de chaque accès à un élément dans le cache. L'élément n'expire pas tant que l'intervalle spécifié par Temps (min) ne s'est pas écoulé, après le dernier accès à l'élément. Ainsi, les éléments fréquemment utilisés restent dans le cache plus longtemps. |
Le type Absolu est la stratégie d'expiration par défaut et dix minutes est la valeur par défaut de Temps (min). La stratégie d’expiration est fixe pour chaque élément d’un cache nommé, mais l’heure (min) peut être personnalisée pour chaque élément à l’aide des surcharges Ajouter et Put qui prennent un paramètre de délai d’expiration .
Notes
Il est important de noter le comportement de l'expiration Glissante lorsqu'elle est utilisée avec le cache local. Si un élément est lu dans le cache local, il n'y a pas d'accès à l'objet sur le cache. Il est donc possible que l'élément expire sur le serveur même s'il est lu en local.
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. En cas de dépassement de ce délai, dès leur déverrouillage, les objets 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.
Vous pouvez suivre l'intégrité et les performances de votre cache sous l'onglet Surveiller de Cache dans le portail de gestion, y compris les mesures relatives à l'éviction et l'expiration. Pour plus d’informations, consultez Surveillance du service de cache à l’aide de l’onglet Moniteur.
Invalidation du cache local
Il existe deux types complémentaires d’invalidation pour le cache local : invalidation basée sur le délai d’attente et invalidation basée sur les notifications.
Conseil
Une fois les objets stockés dans le cache local, votre application peut les utiliser jusqu'à leur invalidation, qu'ils soient ou non mis à jour par un autre client. Pour cette raison, il est recommandé d'activer le cache local pour les données qui sont rarement modifiées.
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 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.
Notes
Les notifications sont disponibles dans les offres de cache Standard et Premium, mais pas dans l'offre Basic. Pour plus d’informations, consultez Offres de cache pour Azure Service de cache géré.
Lorsque vous utilisez les notifications de cache, votre application interroge régulièrement le 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.
Pour plus d’informations et d’exemples, consultez Cache local pour Azure Service de cache géré.
Expulsion
Pour conserver la capacité de mémoire disponible pour un cache, l'éviction LRU (least-recently-used) est prise en charge. Lorsque la consommation de mémoire approche la taille de votre offre de cache, les objets sont exclus de la mémoire, qu'ils aient expiré ou non, jusqu'à ce que la pression exercée sur la mémoire diminue.
Avertissement
Si vous désactivez l'éviction, vous courrez le risque de limiter la bande passante. Dans ce cas, la mémoire a dépassé la limite, mais il n'y a aucun moyen de pallier au manque de mémoire. Les clients qui tentent d'ajouter des éléments au cache dans cet état reçoivent une exception jusqu'à ce que le problème soit résolu.
Vous pouvez suivre l'intégrité et les performances de votre cache sous l'onglet Surveiller de Cache dans le portail de gestion, y compris les mesures relatives à l'éviction et l'expiration. Pour plus d’informations, consultez Surveillance du service de cache à l’aide de l’onglet Moniteur.
Il existe deux paramètres pour l’éviction : Activé et Désactivé. L'éviction est configurée au niveau du cache nommé dans le portail de gestion sous l'onglet Configurer de Cache, et le paramètre par défaut est Activée.
Spécification des paramètres d'expiration et d'éviction à l'aide d'un code
Les méthodes suivantes permettent de remplacer les paramètres par défaut du cache :
Les méthodes Add and Put fournissent des surcharges qui vous permettent de spécifier une valeur de délai d’expiration uniquement pour l’objet que vous ajoutez au cache.
Les méthodes PutAndUnlock et Unlock fournissent des surcharges qui vous permettent d’étendre l’expiration d’un objet après son déverrouillage.
La méthode ResetObjectTimeout vous permet d’étendre explicitement la durée de vie d’un objet, en remplaçant les paramètres d’expiration du cache.
Notes
Indépendamment des paramètres d'expiration ou d'éviction, les données du cache ne sont pas préservées en cas d'arrêt inattendu ou de défaillance du service de cache. 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 généralement appelée « mode de programmation de type cache-aside ».