NCache proporciona soporte JSON, una sintaxis estructurada, legible por humanos y liviana para analizar e intercambiar datos. La gran facilidad que proporciona NCache a usted a través de Cache Data como JSON es la flexibilidad de recuperar datos de cualquier clase personalizada en su caché como JSON. Además, los datos se pueden agregar como JSON y recuperar y analizar como una clase personalizada.
NCache admite JSON a través de:
NCache le permite agregar y recuperar datos de caché en formato JSON. NCache admite múltiples estructuras JSON para insertar y obtener datos JSON de manera eficiente. Estas estructuras son:
Ambas estructuras se derivan de una clase abstracta con el nombre JsonValorBase. Los siguientes párrafos explican estas clases y su uso en NCache para almacenar y recuperar datos.
JsonObjeto representa JObjeto en los estándares JSON en el NCache dominio. JsonObjeto contiene pares de nombre-valor desordenados y se agrega al caché con una clave única que luego se usa para realizar operaciones de caché. Para recuperar datos de caché como JSON, NCache permite recuperar cualquier clase personalizada como JsonObjeto.
Puede insertar un JsonObjeto al caché de la siguiente manera. Este ejemplo muestra cómo llenar un JsonObjeto con una cadena serializada y agréguela al caché.
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 le permite recuperar un objeto personalizado almacenado en caché en forma de JsonObjeto. Esto devuelve una cadena JSON que contiene los datos de su clase personalizada. NCache también le permite almacenar en caché un JsonObjeto y recupérelo como un objeto personalizado utilizando la misma API Get. A continuación se muestra un ejemplo de cómo recuperar un objeto personalizado como un objeto JSON:
var jsonObject = cache.Get<JsonObject>(key);
var jsonObject = cache.get(key, JsonObject.class);
jsonmatriz in NCache es la representación de matriz en los estándares JSON. jsonmatriz es una lista ordenada de valores. Estos valores pueden ser cadenas, números, booleanos, objetos u otra matriz.
Puede añadir JsonObjeto o incluso otro jsonmatriz en un parche de jsonmatriz. NCache usa la propiedad del indexador para agregar y actualizar valores en un jsonmatriz. Puedes crear un jsonmatriz utilización de un JsonObjeto de la siguiente manera:
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, también puede agregar datos JSON en índices específicos en un jsonmatriz. Si un elemento ya existe en el índice especificado, se sobrescribe. Si el índice especificado no existe, el elemento se agrega en ese índice y todos los valores entre el último índice poblado y el nuevo índice se establecen en JsonNulo (nulo en los estándares JSON).
NCache le permite obtener la totalidad jsonmatriz de la memoria caché o recuperar el valor de un índice particular en el jsonmatriz. Una vez recuperados, puede enumerarlos o realizar operaciones basadas en índices en los datos. Así es como puedes obtener un jsonmatriz o un valor particular del caché:
// 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 también le permite tomar JsonEnumerator en caché para recuperar todos los objetos JSON y matrices JSON de la siguiente manera:
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 es un caché distribuido rico en funciones que proporciona muchas funciones para facilitarle el almacenamiento y la recuperación de sus datos. Al igual que con los objetos nativos y personalizados, NCache también admite este tipo de funciones para datos de tipo JSON.
NCache le permite indexar datos JSON según su tipo.
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);
Una vez que haya indexado los datos JSON según su tipo, puede realizar consultas similares a SQL para recuperar o eliminar los datos del caché. Para obtener más información sobre cómo utilizar todos estos atributos de búsqueda al consultar datos JSON, consulte nuestra documentación en Consultar datos 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
}
Al almacenar datos en la memoria caché, NCache le permite asegurarse de que los datos con los que está trabajando no estén obsoletos. Para garantizar esto, NCache ha proporcionado las siguientes características que mantienen su caché y base de datos sincronizados.
En la serialización JSON, los objetos se convierten en su equivalente JSON cuando se serializan y luego se vuelven a convertir en sus objetos personalizados en el momento de la deserialización.
NCache proporciona soporte de serialización JSON para objetos .NET y Java.
Consideremos que tiene los siguientes atributos de Producto en .NET. Puede almacenar este objeto en la caché como un objeto personalizado como se muestra a continuación:
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" });
O bien, serialice estos datos mediante la serialización JSON. Cuando opta por la serialización JSON, estos datos se serializarán en la siguiente cadena JSON:
{
"Name": "Pizza",
"Expiry": "2020-3-28T00:00:00",
"Sizes": ["Large", "Medium"]
}
La serialización JSON es eficiente en cuanto a memoria, portátil y totalmente automatizada y no requiere ningún cambio de código para implementarla. NCache también le permite especificar qué atributos desea serializar y cuáles dejar como están.