Supporto JSON in NCache

NCache fornisce supporto JSON, una sintassi strutturata, leggibile e leggera per l'analisi e la condivisione dei dati. La maggiore facilità fornita da NCache tramite Cache Data as JSON è la flessibilità di recuperare i dati di qualsiasi classe personalizzata nella cache come JSON. Inoltre, i dati possono essere aggiunti come JSON e recuperati e analizzati come una classe personalizzata.

NCache supporta JSON tramite:

API JSON in NCache

NCache consente di aggiungere e recuperare i dati della cache nel formato JSON. NCache supporta più strutture JSON per inserire e recuperare i dati JSON in modo efficiente. Queste strutture sono:

  • Oggetto JSON
  • Array JSON

Entrambe queste strutture derivano da una classe astratta dal nome JsonValueBase. I paragrafi seguenti spiegano queste classi e il loro utilizzo in NCache per memorizzare e recuperare i dati.

Oggetto JSON

Json Object rappresenta JOggetto negli standard JSON nel NCache dominio. Json Object contiene coppie nome-valore non ordinate e viene aggiunto alla cache rispetto a una chiave univoca che viene successivamente utilizzata per eseguire operazioni di cache. Per recuperare i dati della cache come JSON, NCache consente di recuperare qualsiasi classe personalizzata come a Json Object.

Aggiungi JsonObject nella cache

Puoi inserire un Json Object alla cache nel modo seguente. Questo esempio mostra come popolare a Json Object con una stringa serializzata e aggiungerla alla 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);

Recupera JsonObject dalla cache

NCache consente di recuperare un oggetto personalizzato memorizzato nella cache sotto forma di a Json Object. Questo restituisce una stringa JSON contenente i dati della tua classe personalizzata. NCache consente anche di memorizzare nella cache a Json Object e recuperarlo come oggetto personalizzato utilizzando la stessa Get API. Ecco un esempio di come recuperare un oggetto personalizzato come oggetto JSON:

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

Array JSON

JsonArray in NCache è la rappresentazione di JArray negli standard JSON. JsonArray è un elenco ordinato di valori. Questi valori possono essere stringa, numero, booleano, oggetto o un altro array.

Aggiungi JsonArray nella cache

È possibile aggiungere Json Object o anche un altro JsonArray in un JsonArray. NCache usa la proprietà dell'indicizzatore per aggiungere e aggiornare i valori in a JsonArray. Puoi creare un JsonArray utilizzando un Json Object nel seguente modo:

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, puoi anche aggiungere dati JSON a indici specificati in a JsonArray. Se un elemento esiste già nell'indice specificato, viene sovrascritto. Se l'indice specificato non esiste, l'elemento viene aggiunto a quell'indice e tutti i valori tra l'ultimo indice popolato e il nuovo indice vengono impostati su Json Null (nullo negli standard JSON).

Recuperare JsonArray o il suo particolare valore dell'indice

NCache ti consente di recuperare l'intero JsonArray dalla cache o recuperare il valore da un particolare indice su JsonArray. Una volta recuperato, è possibile enumerarlo o eseguire operazioni basate sull'indice sui dati. Ecco come puoi recuperare un JsonArray o un valore particolare dalla 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);

Enumeratore JSON

NCache ti consente anche di portare JsonEnumerator nella cache per recuperare tutti gli oggetti JSON e gli array JSON nel modo seguente:

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 Funzionalità supportate con JSON

NCache è una cache distribuita ricca di funzionalità che fornisce molte funzionalità per facilitare l'archiviazione e il recupero dei dati. Proprio come per gli oggetti nativi e personalizzati, NCache supporta anche tali funzionalità per i dati di tipo JSON.

Indicizza i dati JSON nella cache

NCache ti consente di indicizzare i dati JSON in base al loro 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);

Interroga i dati JSON nella cache

Dopo aver indicizzato i dati JSON in base al loro tipo, puoi eseguire query di tipo SQL per recuperare o eliminare i dati dalla cache. Per ulteriori informazioni su come utilizzare tutti questi attributi ricercabili durante l'esecuzione di query sui dati JSON, fare riferimento alla nostra documentazione su Interroga i dati 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
        }

Sincronizza i dati JSON con il database

Quando si archiviano i dati nella cache, NCache ti consente di assicurarti che i dati con cui stai lavorando non siano obsoleti. Per garantire ciò, NCache ha fornito le seguenti funzionalità che mantengono sincronizzati la cache e il database.

  • Dipendenze cache: NCache supporta le dipendenze della cache sui dati JSON che rimuovono i dati dalla cache se vengono aggiornati nel database. Impara di più riguardo Dipendenza dai dati della cache sul database dalla nostra documentazione.
  • Scadenza: Puoi aggiungere una scadenza basata sul tempo sui tuoi dati JSON in modo che la cache sia sincronizzata con il database. Per maggiori dettagli, fare riferimento alla nostra documentazione su Strategie di scadenza dei dati nella cache.
  • Manifestazioni: NCache fornisce notifiche di eventi che vengono attivate quando viene eseguita un'operazione registrata sulla cache serializzata JSON o sui dati JSON. Per maggiori dettagli, fare riferimento alla nostra documentazione su Notifiche di eventi nella cache.
  • Fornitori di origini dati: NCache consente di rendere persistenti i dati JSON nell'origine dati master e recupera i dati direttamente dall'origine se non vengono trovati nella cache. Fare riferimento alla nostra documentazione su Provider di origini dati per la cache per ottenere assistenza dettagliata su questi fornitori.
  • Caricatore di avvio della cache: I dati JSON possono essere aggiunti automaticamente alla cache quando la cache viene avviata utilizzando Cache Startup Loader. Per maggiori dettagli, fare riferimento alla nostra documentazione su Caricatore di avvio della cache.

Serializzazione JSON di oggetti .NET e Java

Nella serializzazione JSON, gli oggetti vengono convertiti nel loro equivalente JSON quando vengono serializzati e quindi riconvertiti nei loro oggetti personalizzati al momento della deserializzazione.

NCache fornisce il supporto della serializzazione JSON per oggetti .NET e Java.

  • È possibile archiviare un oggetto personalizzato in una cache serializzata JSON da un client .NET e recuperare i dati tramite un client Java come Json Object.
  • È possibile archiviare un oggetto personalizzato in una cache serializzata JSON da un client Java e recuperarlo tramite un client .NET come Json Object.
  • È inoltre possibile archiviare un oggetto JSON in una cache serializzata non JSON da un client .NET e recuperarlo tramite un client Java come oggetto Json Object e viceversa.

Supponiamo che tu abbia i seguenti attributi di prodotto in .NET. Puoi memorizzare questo oggetto nella cache come oggetto personalizzato come mostrato di seguito:

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

In alternativa, serializzare questi dati utilizzando la serializzazione JSON. Quando si opta per la serializzazione JSON, questi dati verranno serializzati nella seguente stringa JSON:

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

La serializzazione JSON è efficiente in termini di memoria, portabile e completamente automatizzata e non richiede modifiche al codice per l'implementazione. NCache consente inoltre di specificare quali attributi si desidera serializzare e quali lasciare così com'è.

Cosa fare dopo?

Review NCache Caratteristiche
Scaricare NCache
Richiedi una Demo LIVE personalizzata
© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.