Prise en charge de JSON dans NCache

NCache fournit la prise en charge de JSON, une syntaxe structurée, lisible par l'homme et légère pour l'analyse et le partage de données. La grande facilité apportée par NCache grâce aux données de cache en tant que JSON, vous avez la possibilité de récupérer les données de n'importe quelle classe personnalisée dans votre cache en tant que JSON. De plus, les données peuvent être ajoutées au format JSON et récupérées et analysées en tant que classe personnalisée.

NCache prend en charge JSON via :

API JSON dans NCache

NCache permet d'ajouter et de récupérer des données de cache au format JSON. NCache prend en charge plusieurs structures JSON pour insérer et récupérer efficacement des données JSON. Ces structures sont :

  • Objet JSON
  • Tableau JSON

Ces deux structures sont dérivées d'une classe abstraite du nom JsonValueBaseJsonValueBase. Les paragraphes suivants expliquent ces classes et leur utilisation dans NCache pour stocker et récupérer des données.

Objet JSON

JsonObject représente JObject dans les normes JSON dans le NCache domaine. JsonObject contient des paires nom-valeur non ordonnées et est ajouté au cache avec une clé unique qui est ensuite utilisée pour effectuer des opérations de cache. Pour récupérer les données du cache au format JSON, NCache permet à n'importe quelle classe personnalisée d'être récupérée en tant que JsonObject.

Ajouter JsonObject dans le cache

Vous pouvez insérer un JsonObject au cache de la manière suivante. Cet exemple montre comment remplir un JsonObject avec une chaîne sérialisée et ajoutez-la au cache.

var product = FetchProductFromDB("1001");
string jsonString = @$"{{ 
			""ProductID"" : ""{product.ProductID}"",
			""ProductName"" : ""{product.ProductName}"",
			""Category"" : ""{product.Category}"",
			""UnitsAvailable"" : ""{product.UnitsAvailable}""
			}}";
JsonObject jsonObject = new JsonObject(jsonString, "Alachisoft.NCache.Sample.Product");
string key = "Product:" + product.ProductID;

// Inserting object in cache
cache.Insert(key, jsonObject);
Product product = Product.fetchProductFromDB("Product:1001");
String jsonString = "{\"ProductID\":\"" + product.getProductID() + "\"," +
		    "\"ProductName\":\"" + product.getProductName() + "\"," +
		    "\"Category\":\"" + product.getCategory() + "\"," +
		    "\"UnitsAvailable\":" + product.getUnitsAvailable() +
		    "}";
JsonObject jsonObject = new JsonObject(jsonString, "com.alachisoft.ncache.sample.Product");
String key = "Product:" + product.getProductID();

// Inserting object in Cache
cache.insert(key, jsonObject);

Récupérer JsonObject du cache

NCache permet de récupérer un objet personnalisé mis en cache sous la forme d'un JsonObject. Cela renvoie une chaîne JSON contenant les données de votre classe personnalisée. NCache vous permet également de mettre en cache un JsonObject et récupérez-le en tant qu'objet personnalisé en utilisant la même API Get. Voici un exemple de comment récupérer un objet personnalisé en tant qu'objet JSON :

var jsonObject = cache.Get<JsonObject>(key);
var jsonObject = cache.get(key, JsonObject.class);

Tableau JSON

Tableau Json in NCache est la représentation de Tableau J dans les normes JSON. Tableau Json est une liste ordonnée de valeurs. Ces valeurs peuvent être une chaîne, un nombre, un booléen, un objet ou un autre tableau.

Ajouter JsonArray dans le cache

Vous pouvez ajouter JsonObject ou même un autre Tableau Json dans un Tableau Json. NCache utilise la propriété indexer pour ajouter et mettre à jour des valeurs dans un Tableau Json. Vous pouvez créer un Tableau Json à l'aide d'un JsonObject de la manière suivante:

var jsonArray = new JsonArray();
...                 
var jsonObject1 = new JsonObject(jsonString1 );
jsonArray.Add(jsonObject1);

var jsonObject2 = new JsonObject(jsonString2);
jsonArray.Add(jsonObject2);

string key = “JsonArrray:1001”;
cache.Insert(key, jsonArray);
var jsonArray = new JsonArray();
        //...
var jsonObject1 = new JsonObject(jsonString1, "com.alachisoft.ncache.sample.Product");
jsonArray.add(jsonObject1);
var jsonObject2 = new JsonObject(jsonString2, "com.alachisoft.ncache.sample.Product");
jsonArray.add(jsonObject2);

String key = "JsonArray:1001";

// Inserting JsonArray in Cache
cache.insert(key, jsonArray);

In NCache, vous pouvez également ajouter des données JSON à des index spécifiés dans un Tableau Json. Si un élément existe déjà à l'index spécifié, il est écrasé. Si l'index spécifié n'existe pas, l'élément est ajouté à cet index et toutes les valeurs entre le dernier index rempli et le nouvel index sont définies sur JsonNull (null dans les normes JSON).

Récupérer Tableau Json ou sa valeur d'indice particulière

NCache permet de récupérer l'intégralité Tableau Json du cache ou récupérer la valeur d'un index particulier sur le Tableau Json. Une fois récupéré, vous pouvez l'énumérer ou effectuer des opérations basées sur l'index sur les données. C'est ainsi que vous pouvez récupérer un Tableau Json ou une valeur particulière du cache :

// Retrieve JsonArray from cache
string key = "JsonArray:1001";
JsonArray jsonArray = cache.Get<JsonArray>(key)

// Retrieve the value of the specified index
JsonValueBase value = jsonArray[2];
// Retrieve JSONArray from cache
String key = "JsonArray:1001";
JsonArray jsonArray = cache.get(key, JsonArray.class);

// Retrieve the value of the specified index
JsonValueBase value = jsonArray.getItem(2);

Énumérateur JSON

NCache vous permet également de mettre JsonEnumerator en cache pour récupérer tous les objets JSON et les tableaux JSON de la manière suivante :

var enumerator = (IDictionaryEnumerator)_cache.GetJsonEnumerator();
while (enumerator.MoveNext())
{
	DictionaryEntry entry = (DictionaryEntry)enumerator.Current;
	JsonValueBase valueBase = (JsonValueBase)entry.Value;
	//...
}
var enumerator = cache.asJsonIterator();
while (enumerator.hasNext())
{
	Entry entry = (Entry) enumerator.next();
	JsonValueBase valueBase =  (JsonValueBase) entry.getValue();
	//...
 }

NCache Fonctionnalités prises en charge avec JSON

NCache est un cache distribué riche en fonctionnalités qui fournit de nombreuses fonctionnalités pour vous faciliter le stockage et la récupération de vos données. Comme pour les objets natifs et personnalisés, NCache prend également en charge de telles fonctionnalités pour les données de type JSON.

Indexer les données JSON dans le cache

NCache vous permet d'indexer les données JSON en fonction de leur type.

Product product = FetchProductFromDB();
string jsonString = @$"{{ ""ProductID"" : ""{product.ProductID}"", ""ProductName"" : ""{product.ProductName}"", ""Price"" : {product.Price} }}";

JsonObject jsonObject = new JsonObject(jsonString, "Alachisoft.NCache.Sample.Product");
string key = "Product:" + product.ProductID;

cache.Insert(key, jsonObject);
Product product = Product.fetchProductFromDB("Product:1001");

String jsonString = "{\"productID\":\"" + product.getProductID() + "\", \"productName\" : \""+ product.getProductName() + "\", \"price\":\"" + product.getPrice() + "\"}";

JsonObject jsonObject = new JsonObject(jsonString,"com.alachisoft.ncache.sample.Product" );
String key = "Product:" +product.getProductID();
cache.insert(key, jsonObject);

Interroger les données JSON dans le cache

Une fois que vous avez indexé les données JSON en fonction de leur type, vous pouvez effectuer des requêtes de type SQL pour récupérer ou supprimer les données du cache. Pour plus d'informations sur la façon d'utiliser tous ces attributs de recherche lors de l'interrogation de données JSON, reportez-vous à notre documentation sur Interroger les données JSON.

string query = "Select * FROM Alachisoft.NCache.Runtime.JSON.JsonObject WHERE Discount = ?";
QueryCommand queryCommand = new QueryCommand(query);queryCommand.Parameters.Add("Discount", 0.5);

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
}
String query = "Select * FROM Alachisoft.NCache.Runtime.JSON.JsonObject WHERE Discount = ?";
QueryCommand queryCommand = new QueryCommand(query);
queryCommand.getParameters().put("Discount", 0.5);

var queryResult = cache.getSearchService().executeReader(queryCommand);
if (queryResult.getFieldCount() > 0) {
      while (queryResult.read()) {
      // Perform operation according to your logic
      }
}
else {
            // No data
        }

Synchroniser les données JSON avec la base de données

Lors du stockage des données dans le cache, NCache vous permet de vous assurer que les données avec lesquelles vous travaillez ne sont pas périmées. Pour garantir cela, NCache a fourni les fonctionnalités suivantes qui maintiennent votre cache et votre base de données synchronisés.

  • Dépendances de cache : NCache prend en charge les dépendances de cache sur les données JSON qui suppriment les données du cache si elles sont mises à jour dans la base de données. En savoir plus sur Dépendance des données de cache sur la base de données à partir de notre documentation.
  • Expiration: Vous pouvez ajouter une expiration basée sur le temps sur vos données JSON afin que votre cache soit synchronisé avec la base de données. Pour plus de détails, reportez-vous à notre documentation sur Stratégies d'expiration des données dans le cache.
  • Evénements: NCache fournit des notifications d'événements qui sont déclenchées lorsqu'une opération enregistrée est effectuée sur votre cache sérialisé JSON ou vos données JSON. Pour plus de détails, reportez-vous à notre documentation sur Notifications d'événements dans le cache.
  • Fournisseurs de sources de données : NCache permet de conserver les données JSON dans la source de données principale et récupère les données directement à partir de la source si elles ne sont pas trouvées dans le cache. Consultez notre documentation sur Fournisseurs de sources de données pour le cache pour obtenir une aide détaillée sur ces fournisseurs.
  • Chargeur de démarrage du cache : Les données JSON peuvent être automatiquement ajoutées au cache lorsque le cache démarre à l'aide du Cache Startup Loader. Pour plus de détails, reportez-vous à notre documentation sur Chargeur de démarrage du cache.

Sérialisation JSON des objets .NET et Java

Dans la sérialisation JSON, les objets sont convertis en leur équivalent JSON lorsqu'ils sont sérialisés, puis reconvertis en leurs objets personnalisés au moment de la désérialisation.

NCache fournit une prise en charge de la sérialisation JSON pour les objets .NET et Java.

  • Vous pouvez stocker un objet personnalisé dans un cache sérialisé JSON à partir d'un client .NET et récupérer les données via un client Java comme JsonObject.
  • Vous pouvez stocker un objet personnalisé dans un cache sérialisé JSON à partir d'un client Java et le récupérer via un client .NET en tant que JsonObject.
  • Vous pouvez également stocker un objet JSON dans un cache sérialisé non Json à partir d'un client .NET et le récupérer via un client Java en tant que JsonObject et vice versa.

Considérons que vous disposez des attributs de produit suivants dans .NET. Vous pouvez stocker cet objet dans le cache en tant qu'objet personnalisé, comme indiqué ci-dessous :

Product product = new Product();
product.Name = "Pizza";
product.Expiry = new DateTime(2020, 3, 28);
product.Sizes = new string[] { "Large", "Medium" };
Product product = new Product();
product.setName("Pizza");
product.setExpiry(new Date(2020, 3, 28));
product.setSizes(new String[] { "Large", "Medium" });

Ou sérialisez ces données à l'aide de la sérialisation JSON. Lorsque vous optez pour la sérialisation JSON, ces données seront sérialisées dans la chaîne JSON suivante :

{
   "Name": "Pizza",
   "Expiry": "2020-3-28T00:00:00",
   "Sizes": ["Large", "Medium"]
}

La sérialisation JSON est économe en mémoire, portable et entièrement automatisée, ne nécessitant aucune modification de code pour sa mise en œuvre. NCache vous permet également de spécifier les attributs que vous souhaitez sérialiser et ceux que vous souhaitez laisser tels quels.

Que faire ensuite?

Avis NCache Fonctionnalités:
Télécharger NCache
Demander une démo personnalisée en direct
© Copyright Alachisoft 2002 - . Tous droits réservés. NCache est une marque déposée de Diyatech Corp.