Opérations CRUD : un aperçu
NCache stocke les données sous forme de paires clé-valeur, c'est-à-dire que les identifiants uniques (clé) sont stockés par rapport à une donnée (valeur). Similaire à une base de données clé-valeur, NCache stocke, récupère et gère également les données via des opérations CRUD. À cet égard, NCache fournit un ensemble varié d'API CRUD pour la mise en cache de données atomiques ou en masse, de manière synchrone ou asynchrone. Ici, nous donnons un aperçu de NCache-opérations CRUD de base prises en charge : Ajouter, insérer, Obtenezet Effacer.
Avant d'aller de l'avant, vous devez savoir quoi stocker dans le cache. Outre les valeurs conventionnelles basées sur des chaînes, NCache permet d'ajouter types de données primitifs, objets personnalisés, données avec métadonnées (CacheItem), structures de donnéeset Données JSON.
Tout objet ajouté au cache doit être sérialisable. NCache gère la sérialisation binaire et JSON en fonction du format de votre magasin. Si vous ne pouvez pas effectuer de sérialisation binaire native, NCache fournit également son propre Cadre de sérialisation compact. Pour le magasin JSON, NCache gère la sérialisation des objets fournis. Alternativement, vous pouvez ajouter NCache objets sérialisés JSON fournis, qui permet la prise en charge d'applications multiplateformes et multilingues.
Types d'opération
NCache permet les opérations CRUD sur des éléments uniques ou en vrac. Pendant ce temps, les modes de fonctionnement pris en charge sont synchrones et asynchrones. Ici, nous expliquons brièvement les types et modes de fonctionnement dans NCache.
Opérations atomiques
Notes
Cette fonctionnalité est également disponible dans NCache Professional.
Nous catégorisons toutes les opérations effectuées sur une seule paire clé-valeur comme opérations atomiques. Par conséquent, de telles opérations nécessitent un seul appel au cache. Le comportement de l'atome ajouter, insérer, supprimezet obtenez les opérations seront abordées dans les sections suivantes.
Opérations en vrac
Notes
Cette fonctionnalité est également disponible dans NCache Professional.
Les opérations en bloc vous permettent d'effectuer n'importe quelle opération CRUD sur plusieurs éléments via un seul appel de cache. Bien qu'une opération en bloc s'exécute en une seule opération, l'échec des opérations est traité individuellement. Ils sont spécialement conçus pour améliorer les performances. Par exemple, la récupération de 100 éléments de cache en une seule opération en bloc est beaucoup plus rapide que leur récupération via 100 appels atomiques. De cette manière, les performances s'améliorent en raison de la réduction des déplacements du réseau vers le serveur distant.
Les opérations en bloc sont particulièrement utiles pour récupérer les données mises en cache en bloc au démarrage d'une application ou insérer un résultat de requête en bloc dans le cache.
Opérations synchrones
Notes
Cette fonctionnalité est également disponible dans NCache Professional.
NCache permet d'ajouter un élément atomique ou un ensemble d'éléments de manière synchrone. Étant donné que les opérations synchrones se produisent comme un appel bloquant, le client doit attendre la réponse du serveur pour exécuter d'autres opérations. Le contrôle revient à l'application une fois l'opération effectuée.
Bien que le client doive attendre la fin de l'opération, les opérations de synchronisation permettent de renvoyer l'état de réussite/échec de l'opération lorsque le contrôle revient à l'utilisateur. Une telle opération peut échouer en raison d'un échec de connexion avec le cache ou d'erreurs système internes. Ce processus fournit aux applications le contrôle nécessaire pour gérer tous les scénarios d'échec dès qu'ils sont rencontrés. Par conséquent, ces opérations sont essentielles lorsque vous traitez des données critiques.
De plus, les opérations synchrones sont séquentielles. Ceci est utile si vos opérations dépendent les unes des autres. Par exemple, un site de commerce électronique ajoute de manière synchrone les articles en vente flash pendant 2 heures seulement et récupère plus tard les articles qui font l'objet d'une vente flash. Lors de la récupération des articles mis en cache en vente, l'échec peut être évité s'il garantit que ces articles ont d'abord été ajoutés avec succès au cache. Les opérations CRUD de base sont synchrones par défaut, sauf indication contraire.
Opérations asynchrones
Les opérations asynchrones se produisent en arrière-plan, de sorte que le client n'a pas à attendre la réponse du serveur pour exécuter d'autres opérations. La liste des actions à effectuer sur le cache est conservée dans une file d'attente côté client, et un thread d'arrière-plan dédié continue de les envoyer côté serveur. Le contrôle revient à l'application immédiatement après la mise en file d'attente d'une opération. Cela augmente la réactivité globale de l'application.
Les opérations asynchrones peuvent être utiles lorsque le temps de réponse est critique pour votre application et que l'échec des opérations n'entrave pas le fonctionnement de votre application.
Étant donné que les opérations asynchrones ne notifient pas l'échec ou le succès des opérations elles-mêmes, les appels asynchrones dans NCache retourner un objet de la Classe de tâche qui peut ensuite être utilisé pour obtenir le statut de l'opération. À cet égard, les drapeaux d'état suivants sont fournis par la classe Task pour indiquer le succès ou l'échec de l'opération effectuée.
- Est terminé : Avertit si l'opération spécifiée se produit avec succès dans le cache.
- Est en défaut : Avertit si l'opération spécifiée se produit mais échoue.
- Est annulé: Avertit si l'opération spécifiée est annulée pour une raison interne.
CRUD de base dans le cache distribué
Vous pouvez interagir avec le cache une fois que vous obtenir une instance d'un cache. Voyons le fonctionnement et le comportement des opérations CRUD de base prises en charge par NCache.
Ajouter/Insérer
Les éléments peuvent être ajoutés au cache en utilisant Ajouter or insérer méthode. Cependant, les deux opérations diffèrent par leur comportement. Add
ajoute avec succès un élément au cache avec une clé spécifique uniquement lorsque la clé fournie n'existe pas dans le cache et lève une exception dans le cas contraire. Supposons que vous souhaitiez interdire l'ajout d'un élément au cache par plusieurs clients à la fois. Ensuite, vous pouvez utiliser le Add
méthode pour notifier l'échec de l'opération si un client essaie d'ajouter un élément déjà existant dans le cache.
D'autre part, Insert
fonctionne également comme une opération de mise à jour. Si vous ajoutez un élément à l'aide de la Insert
et que la clé spécifiée existe déjà dans le cache, l'élément existant dans le cache est remplacé. Outre l'ajout d'éléments, il met à jour en toute sécurité les éléments du cache.
Le cas le plus simple consiste à ajouter ou insérer directement un élément dans le cache en spécifiant une clé et une valeur. Cependant, ces méthodes ont plusieurs surcharges qui vous permettent d'ajouter/d'insérer des éléments dans le cache avec des options avancées. Les cas d'utilisation et les comportements pertinents d'Add/Insert sont décrits ci-dessous.
- Ajouter une masse de données : Une collection de données peut être ajoutée au cache simultanément en utilisant le
AddBulk
/InsertBulk
méthode.AddBulk
peut être utilisé si vous demandez spécifiquement des notifications d'échec d'ajout d'éléments avec des clés existantes. A cet égard, les opérations échouées sont mises en évidence individuellement en retournant un dictionnaire précisant les clés correspondantes à l'exception de l'application. Par exemple, si un lot de 100 éléments est ajouté au cache et que 20 de ces éléments existent déjà dans le cache, les 80 éléments restants seront ajoutés au cache. Les 20 éléments existants seront renvoyés à l'application sous la forme d'un dictionnaire des opérations ayant échoué.
Si vous souhaitez éviter l'échec lors de l'ajout de plusieurs éléments pour mettre à jour les éléments existants, vous pouvez utiliser le InsertBulk
méthode. Il écrase les éléments existants dans le cache et renvoie un dictionnaire des clés qui n'ont pas pu être ajoutées/mises à jour pour une raison quelconque.
Ajouter des données de manière asynchrone : Les éléments peuvent être ajoutés/insérés dans le cache de manière asynchrone lorsque vous souhaitez améliorer l'efficacité de l'application cliente.
AddAsync
/InsertAsync
Les méthodes ajoutent les éléments en arrière-plan et renvoient l'objet Task une fois l'opération terminée. Le client peut vérifier les indicateurs d'état mentionnés dans Opérations asynchrones pour vérifier le succès ou l'échec de l'opération d'ajout/insertion sans aucun code supplémentaire.Ajoutez des données avec des dépendances : Vous pouvez ajouter/insérer des éléments dans le cache avec des dépendances. Étant donné que les données du cache sont temporaires, certaines données peuvent devoir être supprimées du cache en fonction de critères spécifiques à l'utilisateur. Dans ce cas, NCache fournit différentes manières d'invalider les données mises en cache en vous permettant de définir des dépendances lors de l'ajout/de l'insertion d'éléments. Plus précisément, vous pouvez définir des dépendances en fonction de fiable, données de cache, base de donnéeset une source externe pour invalider et éventuellement supprimer certains éléments selon les exigences de votre candidature.
Ecriture simultanée : Vous pouvez insérer des éléments dans le cache avec verrouillage pour contrôler les accès simultanés dans le cas d'applications multithread ou multi-clients. Cela aide à maintenir l'intégrité des données lorsque des opérations de mise à jour simultanées sont effectuées dans le cache. Vous pouvez soit verrouiller un élément en exclusivité, soit travailler sur une version de l'élément ajouté au cache. La version de l'élément est conservée par le cache pour chaque élément du cache et elle est automatiquement incrémentée à chaque fois que l'opération de mise à jour est effectuée.
Écrivez dans la source de données : Dans les cas avancés, si la source de données est configurée, les données seront ajoutées/mises à jour dans le cache ainsi que dans la source de données lors de l'opération d'ajout/insertion.
Flux d'exécution de la demande : Lorsqu'une opération d'ajout/insertion se produit, le processus d'exécution de la requête sous-jacente suit ces étapes : sérialisation, chiffrement et compression. Tout d'abord, les données fournies sont sérialisées. Ensuite, il est chiffré côté client si le chiffrement est configuré. Étant donné que les données circulant sur le réseau peuvent être facilement interceptées, vous pouvez chiffrer vos données sensibles à l'aide de NCache Fonctionnalité de cryptage des données pour le protéger des risques de sécurité. Enfin, les données chiffrées sont compressées si la compression est activée. Étant donné que la bande passante et la mémoire disponibles sont rares, NCache Fonction de compression des données vous permet de réduire considérablement le trafic réseau et la consommation de mémoire. Finalement, vos opérations d'écriture sont effectuées plus rapidement.
Obtenez
Principalement, un cache est considéré comme efficace en fonction de sa capacité à récupérer des données. Un élément peut être récupéré du cache à l'aide de la Get
opération en spécifiant la clé sur laquelle l'élément a été stocké. Si l'élément spécifié n'existe pas dans le cache, une valeur nulle est renvoyée sans exception.
Obtenez une grande quantité d'articles : Plusieurs éléments peuvent être récupérés du cache simultanément en utilisant le
GetBulk
méthode. Il récupère les éléments trouvés dans le cache sous la forme d'un dictionnaire clé-valeur. Aucune exception n'est levée si l'une des clés spécifiées n'existe pas dans le cache.Vérifier l'existence des éléments: Le cache étant volatile, vous devrez peut-être savoir si un élément existe dans le cache ou non. L'existence d'un élément peut être déterminée à l'aide du NCache à condition de
Contains
méthode. De plus, l'existence de plusieurs éléments peut être vérifiée par leContainsBulk
méthode.Obtenir de la source de données : Dans les cas avancés, si la source de données est configurée, les données seront extraites de la source de données si elle n'existe pas dans le cache. Pour plus de détails, vous pouvez vous référer au chapitre Fournisseurs de sources de données.
Effacer
Pour gérer efficacement les données obsolètes et le stockage du cache, vous devrez peut-être supprimer les données explicitement. Vous pouvez facilement supprimer des éléments du cache à l'aide de la Remove
méthode. Si la clé spécifiée n'existe pas dans le cache, une valeur nulle est renvoyée. Vous pouvez également obtenir l'élément supprimé pour un traitement ultérieur en fonction des besoins de votre candidature. Cependant, le coût de la récupération des objets lors de leur retrait est inévitable. Par conséquent, l’approche préalable est recommandée lorsque vous n’avez pas besoin des éléments lors de la suppression.
Supprimer les articles en vrac : Une collection d'éléments peut être supprimée du cache simultanément à l'aide de la
RemoveBulk
méthode. Vous pouvez également récupérer les éléments supprimés avec succès dans un dictionnaire. Cependant, il peut être lent en fonction de la taille des objets récupérés lors de la suppression. Par conséquent, il est recommandé de supprimer simplement les éléments, car il est plus efficace de ne pas traiter les éléments supprimés.Supprimer des éléments de manière asynchrone : Vous pouvez supprimer des données atomiques du cache de manière asynchrone à l'aide de la
RemoveAsync
méthode. L'élément sera supprimé en arrière-plan et une fois l'opération terminée, vous recevrez le statut. Si vous souhaitez vérifier si cet élément a été supprimé avec succès ou non, vous pouvez utiliser le indicateurs d'état pour les opérations asynchrones.Supprimer de la source de données : Dans les cas avancés, si la source de données est configurée, la suppression des données se produira dans le cache ainsi que dans la source de données. Pour plus de détails, vous pouvez vous référer au chapitre Fournisseurs de sources de données.
Notes
Contrairement à Remove
ainsi que RemoveBulk
, RemoveAsync
ne renvoie pas les objets supprimés à l'application.
Dans cette section
Ajouter des données au cache
Explique comment ajouter des données dans le cache.
Mettre à jour les données existantes dans le cache
Explique comment mettre à jour les données existantes dans le cache.
Supprimer les données du cache
Explique comment supprimer des données du cache.
Récupérer les données de cache existantes
Explique comment récupérer des données à partir du cache.