Dans la vie de tous les jours, vous avez dû vivre une expérience où un carton de lait est resté plus longtemps dans votre réfrigérateur et vous avez oublié de le jeter. Ce qui se passe ensuite, c'est que vous avez du lait rassis dans votre réfrigérateur, qui occupe de l'espace, ne sert à rien et ne peut être nocif que s'il est consommé. De même, vos données en cache sont également censées avoir une date d'expiration. Toute donnée conservée longtemps dans votre cache devient obsolète (comme le lait), n'est d'aucune utilité et n'occupe que de l'espace dans votre cache. Et la solution dans les deux cas est similaire : jetez-le !
Ce blog a pour but d'expliquer les stratégies d'expiration pour conserver les données de votre cache à jour et jeter les données obsolètes.
Expiration des données de cache : le besoin et le concept
Supposons que vous exploitez un site Web de commerce électronique et que vous avez ajouté les informations de ces produits dans le cache. Pendant une longue période, les informations sur les produits sont conservées dans le cache sans être modifiées. Mais maintenant, pour une raison quelconque, les prix de certains produits ont été mis à jour dans la source de données. Dans ce cas, une incohérence des données se produit car vos clients consultent toujours les anciens prix, qui sont en fait les données obsolètes mises en cache.
NCache fournit une expiration où vous pouvez définir une limite de temps avec vos données, et une fois la limite atteinte, les données ne sont plus valides. Les données invalidées doivent être supprimées du cache après un délai prédéfini. Intervalle propre. Il s'agit d'un intervalle (défini par vous) après lequel tous les éléments expirés sont automatiquement supprimés du cache. Ainsi, tout élément expiré n'est pas immédiatement supprimé du cache.
Expiration des données dans NCache NCache Détails
Types d'expiration dans NCache
NCache fournit les stratégies suivantes pour répondre aux besoins de l'utilisateur :
- Expiration absolue/par défaut absolue
- Glissement/Expiration glissante par défaut
Nous examinerons de près ces deux types et leurs utilisations.
Expiration absolue
Dans cette stratégie, un temps absolu est spécifié avec l'élément qui doit être invalidé. L'heure indiquée est conservée sur le UTC format d'heure, par conséquent, l'heure spécifiée dans n'importe quelle zone est convertie au format d'heure UTC sur le serveur de cache. Le temps peut aller de secondes à heures à jours à mois, et une fois le temps écoulé, l'élément est invalidé ou a expiré. Regardez la figure 1 pour plus de clarté :
Cas d'utilisation: Pour les cas où vous pouvez estimer combien de temps un élément doit être conservé dans le cache. Par exemple, si un produit à durée limitée est lancé et ne peut être vendu après 24 heures, l'article est ajouté avec une expiration absolue de 24 heures et après cela, le produit expire du cache.
Regardons l'exemple de code qui montre ajoute un élément dans le cache qui expire après 5 minutes.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Pre-condition: Cache is already connected // Get product from database against given product ID Product product = FetchProductFromDB(1001); // Generate a unique cache key for this product string key = $"Product:{product.ProductID}"; // Create a new CacheItem for this product with expiry var cacheItem = new CacheItem(product); var expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(5)); cacheItem.Expiration = expiration; cache.Insert(key, cacheItem); |
Expiration glissante
Comme son nom l'indique, cette stratégie conserve les données dans le cache tant qu'elles sont utilisées. Ainsi, les données qui n'ont pas été utilisées pendant un certain temps sont invalidées. Chaque fois que des données ajoutées avec une expiration glissante sont consultées, la durée d'existence de ces données dans le cache est prolongée. Par exemple, si un élément avec un intervalle glissant de 30 secondes n'est pas accessible pendant 30 secondes, il est expiré. De même, s'il est accédé dans les 30 secondes, la durée de vie de l'élément est dépassée de 30 secondes supplémentaires dans le cache.
Cas d'utilisation: Supposons que vous disposiez d'une application qui utilise les informations d'identification de l'utilisateur pour y accéder. Vous souhaitez fournir un accès à l'utilisateur tant qu'il est actif et utilise l'application. L'expiration glissante vous aide dans les cas où la session peut être maintenue en gardant une trace des utilisateurs actifs.
Dans l'exemple ci-dessous, une expiration glissante de 5 minutes est ajoutée avec le produit :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// Get product from database against given product ID Product product = FetchProductFromDB(1001); // Generate a unique cache key for this product string key = $"Product:{product.ProductID}"; // Create a new CacheItem for this product with expiry var cacheItem = new CacheItem(product); var expiration = new Expiration(ExpirationType.Sliding, TimeSpan.FromMinutes(5)); cacheItem.Expiration = expiration; cache.Insert(key, cacheItem); |
Expulsion en NCache Expiration absolue Expiration glissante
Stratégies d'expiration par défaut
NCache vous permet également d'ajouter une expiration par défaut pour vous aider à économiser l'effort de le configurer manuellement. Ceux-ci ne peuvent être configurés qu'à l'aide de NCache Web Manager ou fichiers de configuration (présentés plus loin dans le blog). Voici les valeurs par défaut :
- Absolu par défaut
- Glissement par défaut
- Absolue plus longue par défaut
- Glissement par défaut plus long
Les valeurs par défaut par défaut sont de 5 secondes pour toutes les stratégies d'expiration. Prière de se référer à Expiration par défaut expliqué en détail dans NCache Documentation.
Configurer l'expiration à l'aide de NCache Web Manager
Vous pouvez activer l'expiration et définir la durée à l'aide de NCache Gestionnaire Web. Laisse moi te montrer comment:
Configurer l'expiration à l'aide des fichiers de configuration
Vous pouvez également activer l'expiration dans NCache à l'aide du fichier de configuration (config.ncconf) qui est installé dans NCache répertoire d'installation par défaut. Sous le balise, il y a une tag comme indiqué ci-dessous :
1 2 3 4 5 |
<expiration-policy enabled="True"> <absolute-expiration longer-enabled="False" longer-value="5" default-enabled="False" default-value="30"/> <sliding-expiration longer-enabled="False" longer-value="5" default-enabled="False" default-value="20"/> </expiration-policy> |
De même, vous pouvez spécifier l'intervalle de nettoyage après lequel les éléments expirés sont supprimés du cache, comme indiqué ci-dessous :
1 2 3 |
<cache-settings ... > <cleanup interval="15sec"/> </cache-settings> |
Suppression groupée d'articles expirés
Tous les éléments expirés du cache sont supprimés en bloc pour éviter les baisses de performances causées par la suppression d'éléments individuels. Cependant, vous pouvez configurer la taille en bloc des éléments à supprimer ainsi que le délai entre deux suppressions en bloc consécutives de données expirées. NCache vient avec un Alachisoft.NCache.Service.exe.config fichier placé dans le répertoire d'installation de NCache et possède les balises configurables suivantes :
1 2 |
<add key="NCacheServer.ExpirationBulkRemoveSize" value="10"/> <add key="NCacheServer.ExpirationBulkRemoveDelay" value="0"/> |
Configuration de l'expiration des données Expiration et expulsion
Faits à savoir
- Si un élément est ajouté dans le cache sans expiration (absolue ou glissante), il reste dans le cache pour toujours jusqu'à ce qu'il soit supprimé manuellement.
- Vous devrez redémarrer le NCache service après avoir configuré quoi que ce soit à l'aide des fichiers de configuration pour que la modification prenne effet.
- In NCache, l'expiration fonctionne différemment selon les différentes topologies, tout est expliqué en détail dans Expiration dans un environnement en cluster.
En résumé !
Ainsi, tout ce dont nous avons discuté jusqu'à présent se résume au fait que les données obsolètes de votre cache doivent être gérées efficacement et que l'expiration est le moyen de le faire. C'est une technique qui fait expirer les données du cache en fonction de la technique que vous avez fournie. NCache vous aide à gérer ces choses sans aucun tracas.