Dans un environnement de cache distribué, il peut y avoir des scénarios dans lesquels certaines données doivent être présentes dans le cache pour que l'application les utilise immédiatement après le début de son exécution. Initialement, lorsqu'un cache démarre, il ne contient aucune donnée, ce qui peut entraîner des déplacements coûteux vers la source de données pour obtenir des données, ce qui a un impact sur les performances de l'application. Par conséquent, il devient important que le cache utilisé pour stocker les données soit préchargé avec certaines données de référence avant que l'application ne commence à les utiliser.
Dans ce but, NCache fournit une Chargeur de démarrage du cache fonctionnalité qui permet aux utilisateurs d'implémenter une interface pour précharger les données de référence souhaitées dans le cache dès que le cache démarre. En conséquence, l'application utilisateur n'aura pas d'échecs de cache et moins de déplacements de source de données, obtenant ainsi des performances plus rapides.
Composants du chargeur de démarrage du cache
Chaque fois que le cache démarre, Cache Startup Loader récupère automatiquement les données de la source de données pour que l'utilisateur les utilise au préalable. Par conséquent, avant de passer au fonctionnement de Cache Loader, l'utilisateur doit connaître certaines de ses caractéristiques qui sont expliquées ci-dessous.
- Jeux de données: Un jeu de données est un moyen pour l'utilisateur de regrouper différents types de données afin qu'il puisse les charger ou les actualiser séparément à différents intervalles ou événements pour atteindre le parallélisme.
- Service de chargeur : Il est chargé de gérer les tâches et de charger les données de la source de données dans le cache au démarrage.
- Tentatives de chargement du cache : En cas d'échec d'une opération lors du chargement du cache, ces opérations ayant échoué peuvent être exécutées à nouveau avant de passer à la suivante grâce à l'option de nombre de tentatives configurée via NCache Gestionnaire Web.
NCache Détails Cache Loader et Refresher Docs NCache Docs
Comment implémenter Cache Startup Loader ?
Pour activer Cache Startup Loader, l'utilisateur doit tout d'abord implémenter le ICacheLoader interface. NCache utilise cette interface avec les méthodes expliquées ci-dessous pour charger les données de la source de données dans le cache au démarrage du cache.
Initialiser le chargeur de démarrage du cache
Init La méthode est appelée sur Cache Startup pour transmettre les paramètres configurés afin que l'utilisateur puisse l'utiliser en conséquence pour initialiser son cache et la source de données. Configurez simplement la connexion en ouvrant une connexion de base de données comme SQL et initialisez un cache avec le nom donné comme l'exemple d'implémentation ci-dessous pour .NET et Java.
1 2 3 4 5 6 7 8 9 |
public void Init(IDictionary<string, string> parameters, string cacheName) { cache = CacheManager.GetCache(cacheName); connectionString = parameters.ContainsKey("ConnectionString") ? parameters["ConnectionString"] : null; if (connectionString != null) { connection = new SqlConnection(connectionString); } } |
1 2 3 4 5 6 7 8 |
public void init(Map<String, String> parameters, String cacheName) { cache = CacheManager.getCache(cacheName); connectionString = parameters.containsKey("ConnectionString") ? parameters.get("ConnectionString") : null; if (connectionString != null) { connection = DriverManager.getConnection(connectionString); } } |
Charger les données au démarrage du cache
L'exemple d'implémentation suivant pour .NET et Java, de la méthode LoadDatasetOnStartup of ICacheLoader
L'interface récupère les données de la source de données et les ajoute dans le cache au démarrage du cache pour précharger le cache. Il renvoie un contexte utilisateur qui contient les informations sur les données chargées dans le cache.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
public object LoadDatasetOnStartup(string dataset) { // Create a list of datasets to load at cache startup IList<object> datasetToLoad; switch (dataSet.ToLower()) { // If dataset is "products", fetch products from data source to load in cache case "products": datasetToLoad = FetchProductsFromDataSource(); // Insert fetched product in the cache foreach (var product in datasetToLoad) { string key = $"ProductID:{product.Id}"; cache.Insert(key, product); } break; // You can add more cases for different datasets as per requirement and fetch them from the data source default: // Invalid dataset } // User context is the time at which datasets were loaded in the cache object userContext = DateTime.Now; return userContext; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public Object loadDatasetsOnStartup(String dataset) { // Create a list of datasets to load at cache startup List<Object> datasetToLoad; switch (dataset.toLowerCase()) { // If dataset is "products", fetch products from data source and add in cache case "products": datasetToLoad = fetchProductsFromDataSource(); // Insert fetched product in the cache for (var product : datasetToLoad) { string key = "ProductID:" + product.productID; cache.insert(key, product); } break; // You can add more cases for different datasets as per the requirement and fetch them from data source default: // Invalid dataset } // User context is the time at which datasets were loaded in the cache Object userContext = LocalDateTime.now(); return userContext; } |
Tout comme le préchargement des données est une chose importante à faire, il peut y avoir un risque énorme que les données chargées deviennent obsolètes. Les données déjà chargées dans le cache peuvent être modifiées en raison de tout changement se produisant dans la source de données, c'est pourquoi les données préchargées peuvent devenir obsolètes. Pour garder ces données chargées à jour, NCache offre une fonctionnalité de Rafraîchissement du cache qui utilise l'implémentation de Cache Loader pour garder les données chargées à jour et synchronisées avec la source de données.
NCache Détails Configurer Cache Loader et Refresher Docs de rafraîchissement du cache
Configurez Cache Loader via NCache Web Manager
Une fois que l'utilisateur a implémenté Cache Startup Loader, il peut le configurer via NCache Web Manager. Voici comment cela peut être fait.
Conclusion!
Comme vous pouvez le voir, NCache fournit à ses utilisateurs une puissante fonctionnalité Cache Startup Loader pour précharger les données dans le cache au lieu d'un suivi manuel. Alors, attrape NCache et acquérez toutes ses fonctionnalités étonnantes pour des performances et une évolutivité plus rapides des applications !