L'adage "640 Ko devrait suffire à tout le monde" était autrefois largement accepté. Il y a un certain désaccord sur qui l'a dit, mais il y a maintenant un accord universel sur le fait que personne ne peut jamais savoir ce que signifie "assez" en informatique.
Pour cette raison, vous devez supprimer ou expulser certaines données mises en cache lorsque vous configurez vos caches avec une estimation de la quantité de données qu'ils peuvent contenir. Sans pour autant expulsion, si le cache est plein, aucune demande entrante d'ajout de données n'est acceptée car aucune donnée n'est supprimée du cache.
Figure 1 explique cela dans une illustration simple:
L'activation de l'éviction signifie que votre cache supprimera les données en fonction de l'utilisation ou de la priorité par rapport aux autres éléments du cache. Cela libère de l'espace pour les données entrantes qui peuvent être ajoutées au cache une fois que les éléments plus anciens/moins prioritaires sont expulsés du cache. Figure 2 illustre cela pour plus de clarté.
Nous discuterons de la manière dont NCache prend en charge et gère différentes politiques d'éviction, et comment elles peuvent être activées sur le cache.
NCache Détails Configurer l'expulsion – NCache Docs NCache Documentation de l'API client
Politiques d'expulsion dans NCache
NCache fournit différentes saveurs d'expulsion pour s'adapter à tous les cas d'utilisation.
Moins récemment utilisé (LRU)
L'une des politiques d'expulsion les plus couramment utilisées est Lru. Cette politique d'éviction permet aux caches d'évincer les éléments de cache les plus anciens qui n'ont pas été utilisés depuis longtemps par rapport aux éléments récemment consultés. Les données sont expulsées en fonction de leur heure de dernier accès. L'heure d'accès est mise à jour sous la forme d'un horodatage pour chaque élément du cache lorsqu'il est extrait ou mis à jour dans le cache.
Supposons que votre cache contient des données pour les produits qui sont consultés par les clients. Une fois que votre cache est presque plein, il est logique d'évincer les produits qui n'ont pas été consultés depuis un certain temps.
Les moins fréquemment utilisés (LFU)
Cette règle d'éviction supprime les éléments de cache les moins fréquemment utilisés. Dans LFU les données sont expulsées en fonction de la fréquence de leur utilisation/nombre d'accès à l'élément. Par exemple, si un élément est consulté 5 fois, il s'agit d'un candidat plus approprié pour l'éviction qu'un élément consulté 20 fois. Ceci est utile pour les scénarios où un article de vente à chaud est consulté par les clients et vous devez vider le cache. Expulser un article qui n'a pas été consulté autant que l'article en vente à chaud n'aura pas d'impact sur votre expérience utilisateur.
Expulsion basée sur la priorité
Expulsion basée sur la priorité expulse d'abord les données les moins importantes du cache. Si vous pouvez hiérarchiser vos données de cache, cette politique d'éviction doit être adoptée pour un meilleur contrôle sur la façon dont les données sont évincées. La priorité est spécifiée lors de l'ajout de l'élément de cache au cache. Vous pouvez spécifier n'importe quelle priorité parmi les niveaux de priorité suivants :
- Faible
- Inférieure à la normale
- Normal
- Dessus de la normale
- Haute
- Non amovible – Ce niveau de priorité spécifie que l'élément de cache ne doit pas être supprimé et ne peut être configuré qu'à l'aide de NCache API.
Voici comment vous pouvez facilement spécifier la priorité de chaque élément tout en l'ajoutant au cache :
1 2 3 4 5 6 7 8 9 |
Product product = FetchProductFromDB(1001); string key = $"Product:{product.ProductID}"; CacheItem cacheItem = new CacheItem(product) { Priority = CacheItemPriority.High }; cache.Add(key, cacheItem); |
NCache Détails Configurer l'expulsion – NCache Docs NCache Documentation de l'API client
Suppression en masse d'éléments d'expulsion
Lors de l'éviction, les éléments sont supprimés en bloc afin que les performances ne soient pas affectées par l'éviction des éléments individuellement. NCache vous permet de personnaliser facilement la taille et le délai entre deux expulsions groupées consécutives en fonction de vos besoins.
Dans le Alachisoft.NCache.Service.exe.config fichier dans %NCHOME%/bin/service, vous pouvez configurer ces paramètres via les balises suivantes. Pour plus de détails, reportez-vous à la documentation sur Configuration des paramètres d'expulsion.
Taille en vrac pour l'expulsion
Vous pouvez spécifier le nombre d'éléments à supprimer en un seul appel groupé.
1 |
<add key="NCacheServer.EvictionBulkRemoveSize" value="1000"/> |
Délai de suppression en masse des expulsions
Vous pouvez spécifier le délai (en secondes) entre les appels de suppression d'expulsion, comme indiqué ici. Une valeur de zéro signifierait qu'il n'y a pas de retard dans l'expulsion et les articles continueront d'être expulsés.
1 |
<add key="NCacheServer.EvictionBulkRemoveDelay" value="5"/> |
Activer l'expulsion via Web Manager
Vous pouvez activer l'expulsion en suivant une série de quelques étapes simples. Une fois que vous avez activé l'éviction, vous pouvez personnaliser le taux d'éviction (le pourcentage de la taille totale du cache à évincer) et spécifier la stratégie et la priorité.
Activer l'expulsion via les fichiers de configuration
Vous pouvez également configurer l'éviction en modifiant le fichier de configuration du cache (config.ncconf). Sous le <cache-settings>
balise, ajoutez ce qui suit <eviction-policy>
tag:
1 2 3 |
<cache-settings ...> <eviction-policy enabled="True" default-priority="normal" policy="priority" eviction-ratio="5%"/> </cache-settings> |
NCache Détails Configurer l'expulsion – NCache Docs Comparaison Des Éditions
Expulsion dans un environnement en cluster
- Une fois l'expulsion activée, l'expulsion est gérée intelligemment par NCache dans chaque topologie de cache :
- Cache partitionné/de partition de réplica : In Partitionné ainsi que Partition de réplique topologies, puisque chaque nœud a une partition de données, chaque nœud est donc responsable d'expulser ses propres données. Pour le nœud de réplica dans la partition de réplica, les données sont automatiquement supprimées lorsqu'elles sont supprimées du nœud actif.
- Cache répliqué : In Répliqué topologie, chaque nœud a le même ensemble de données, donc seul le coordinateur du cluster est responsable de l'éviction.
- Cache miroir : In Miroir cache, le nœud actif est chargé d'effectuer l'éviction sur l'ensemble du cache.
Conclusion
Pour que les opérations de cache s'appliquent sur le cache sans aucune interruption, vous devez vous assurer que votre cache conserve des données fraîches et supprime toutes les données indésirables. C'est là que l'expulsion entre en jeu. La configuration de l'expulsion est simple, et le reste est géré par NCache elle-même.