Interroger les données JSON dans le cache
Vous pouvez interroger des données Json à l'aide d'index de requête (comme nous l'avons détaillé dans les étapes ci-dessous) ou en utilisant les attributs de recherche qui y sont associés. Les attributs consultables incluent :
- Tags
- Balises nommées
- Groupes
Notes
Cette fonctionnalité est également disponible dans NCache Professional.
Conditions préalables pour interroger les données JSON dans le cache
- Pour en savoir plus sur les prérequis standard requis pour travailler avec tous NCache fonctionnalités côté client, y compris les données JSON, veuillez vous référer à la page donnée sur Prérequis de l'API côté client.
- Pour interroger des données à l'aide d'index, indexez vos objets de requête comme détaillé dans notre Guide de l'administrateur.
- Si vous avez défini des index, vous devez fournir des informations de type pour l'objet JSON à indexer lors de sa création.
- Pour plus de détails sur l'API, reportez-vous à : ICache, CacheItem, Valeur Json, JsonObject, Groupes, Tags, Balises nommées, insérer, Ajouter un attribut, Obtenez, RequêteCommand, Service de recherche, ExécuterReader, Fieldcount, NamedTagsDictionnaire.
Étape 1 : Définition des index de données JSON pour les requêtes
Pour interroger des données à l'aide d'index, indexez vos objets de requête comme détaillé dans notre Guide de l'administrateur utilisant l' NCache Centre de gestion ou outils de ligne de commande. Où vous devrez spécifier un nom de type ou une classe (comme Alachisoft.NCache.Customer), ainsi que les attributs que vous interrogerez ultérieurement (par exemple, CompanyName).
Étape 2 : Spécifier les informations de type pour les requêtes d'index JSON
Vous devez fournir un nom de type (le même nom de type que dans l'index que vous avez défini précédemment) pour interroger le JsonObject
lors de l'ajout de cet objet au cache. Sinon, vous ne pourrez effectuer aucune requête avec succès. Vous pouvez apprendre à spécifier ce type d'informations dans votre extrait de code dans notre section sur Ajout de JsonObject au cache avec le nom du type
Étapes 3 : interroger des JsonObjects à l'aide des index de requête JSON
Si vous avez terminé les deux étapes précédentes, vous pouvez ensuite effectuer une recherche en fonction de l'attribut dont vous avez besoin (par exemple, CompanyName), comme démontré dans les extraits de code ci-dessous. Il est nécessaire d'ajouter des informations de type pour garantir une désérialisation et une validation appropriées de l'objet récupéré du cache.
// Preconditions:
// (1) Cache is already connected
// (2) Cache is JSON Serialized
// Retrieve the CacheItem using the CompanyName with a query
string query = "SELECT * FROM Alachisoft.NCache.Customer WHERE $CompanyName$ = ?";
var queryCommand = new QueryCommand(query);
queryCommand.Parameters.Add("$CompanyName$", "CustomerItem");
var queryResult = cache.SearchService.ExecuteReader(queryCommand);
// QueryResult contains all the keys and metadata of result
if (queryResult.FieldCount > 0)
{
while (queryResult.Read())
{
// Perform operation according to your logic
}
}
else
{
// No data containing the given CompanyName exist
}
Notes
Pour garantir la sécurité de l'opération, il est recommandé de gérer toutes les exceptions potentielles au sein de votre application, comme expliqué dans Gestion des échecs.
Interroger des JsonObjects avec des groupes, des balises ou des balises nommées
Vous pouvez ajouter JsonObject
dans votre cache en tant que CacheItem
. CacheItem
est une classe personnalisée fournie par NCache qui peut être utilisé pour ajouter des données au cache. CacheItem vous permet d'y ajouter diverses propriétés, par exemple : Verrouillable, Dépendance, Tags, Balises nomméeset une Groupes.
Un attribut ne peut pas contenir de référence à l'objet lui-même. Si c'est le cas, une exception est levée.
L'exemple suivant ajoute un CacheItem
à la cache avec JsonObject
Témoignages comme la valeur de la CacheItem
. Les balises sont ajoutées au CacheItem
puis l'élément est récupéré à l'aide de la balise à l'aide d'une commande de requête.
Customer customer = FetchCustomerFromDB(1001);
// Create a unique key for the object
string key = $"Customer:{customer.CustomerID}";
// Create a new JSON object and set attributes
// string values need to be added with JsonValue
var jsonCustomer = new JsonObject("Alachisoft.NCache.Customer");
jsonCustomer.AddAttribute("CustomerID", customer.CustomerID);
jsonCustomer.AddAttribute("ContactName", (JsonValue)customer.ContactName);
jsonCustomer.AddAttribute("CompanyName", (JsonValue)customer.CompanyName);
jsonCustomer.AddAttribute("Phone", customer.Phone);
jsonCustomer.AddAttribute("Address", customer.Address);
// Create a new CacheItem
var item = new CacheItem(jsonCustomer);
// Add Tag to the cacheItem
item.Tags = new Tag[] { new Tag("CustomerItem") };
// Add CacheItem in the cache with the value
cache.Insert(key, item);
// Retrieve the CacheItem using the tag with a query
string query = "SELECT * FROM Alachisoft.NCache.Customer WHERE $Tag$ = ?";
var queryCommand = new QueryCommand(query);
queryCommand.Parameters.Add("$Tag$", "CustomerItem");
var queryResult = cache.SearchService.ExecuteReader(queryCommand);
// QueryResult contains all the keys and metadata of result
if (queryResult.FieldCount > 0)
{
while (queryResult.Read())
{
// Perform operation according to your logic
}
}
else
{
// No data containing the named tag(s) exist
}
Ressources additionnelles
NCache fournit un exemple d'application pour les données de cache en tant que JSON sur GitHub.
Voir aussi
.RAPPORTER: Alachisoft.NCache.Runtime.JSON espace de noms.
Java: com.alachisoft.ncache.runtime.json espace de noms.