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 :
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 :
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.
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.
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);
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 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.
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).
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);
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 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.
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);
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
}
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.
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.
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.