Soporte JSON en NCache

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:

API JSON en NCache

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:

  • Objeto JSON
  • Matriz JSON

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.

Objeto JSON

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.

Agregar JsonObject en caché

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);

Recuperar JsonObject de caché

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);

Matriz JSON

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.

Agregar JsonArray en caché

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).

Recuperar jsonmatriz o su valor de índice particular

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);

Enumerador JSON

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 Características compatibles con JSON

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.

Indexar datos JSON en caché

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);

Consultar datos JSON en caché

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
        }

Sincronizar datos JSON con base de datos

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.

  • Dependencias de caché: NCache admite dependencias de caché en los datos JSON que eliminan datos del caché si se actualizan en la base de datos. Aprender más acerca de Dependencia de datos de caché en la base de datos de nuestra documentación.
  • Vencimiento: Puede agregar una caducidad basada en el tiempo en sus datos JSON para que su caché se sincronice con la base de datos. Para obtener más detalles, consulte nuestra documentación sobre Estrategias de caducidad de datos en caché.
  • Eventos: NCache proporciona notificaciones de eventos que se activan cuando se realiza cualquier operación registrada en su caché serializada JSON o datos JSON. Para obtener más detalles, consulte nuestra documentación sobre Notificaciones de eventos en caché.
  • Proveedores de fuentes de datos: NCache permite conservar datos JSON en la fuente de datos maestros y recupera datos directamente de la fuente si no se encuentran en el caché. Consulte nuestra documentación sobre Proveedores de origen de datos para caché para obtener ayuda detallada sobre estos proveedores.
  • Cargador de inicio de caché: Los datos JSON se pueden agregar automáticamente al caché cuando el caché comienza a usar el Cargador de inicio de caché. Para obtener más detalles, consulte nuestra documentación sobre Cargador de inicio de caché.

Serialización JSON de objetos .NET y Java

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.

  • Puede almacenar un objeto personalizado en una caché serializada JSON desde un cliente .NET y recuperar los datos a través de un cliente Java como JsonObjeto.
  • Puede almacenar un objeto personalizado en una caché serializada JSON desde un cliente Java y recuperarlo a través de un cliente .NET como JsonObjeto.
  • También puede almacenar un objeto JSON en una caché serializada que no sea Json desde un cliente .NET y recuperarlo a través de un cliente Java como JsonObjeto y viceversa.

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.

¿Qué hacer a continuación?

Revisar NCache Caracteristicas
Descargar NCache
Solicite una demostración EN VIVO personalizada
© Copyright Alachisoft 2002 - Todos los derechos reservados. NCache es una marca registrada de Diyatech Corp.