JSON-Unterstützung in NCache

NCache Bietet JSON-Unterstützung, eine strukturierte, für Menschen lesbare, leichtgewichtige Syntax zum Parsen und Datenaustausch. Die größte Leichtigkeit, die durch bereitgestellt wird NCache Ihnen durch Cache Data as JSON die Flexibilität bietet, Daten jeder benutzerdefinierten Klasse in Ihrem Cache als JSON abzurufen. Darüber hinaus können Daten als JSON hinzugefügt und als benutzerdefinierte Klasse abgerufen und analysiert werden.

NCache unterstützt JSON durch:

JSON-API ein NCache

NCache Ermöglicht das Hinzufügen und Abrufen von Cache-Daten im JSON-Format. NCache unterstützt mehrere JSON-Strukturen zum effizienten Einfügen und Abrufen von JSON-Daten. Diese Strukturen sind:

  • JSON-Objekt
  • JSON-Array

Diese beiden Strukturen werden von einer abstrakten Klasse mit dem Namen abgeleitet JsonValueBase. In den folgenden Abschnitten werden diese Klassen und ihre Verwendung erläutert NCache um Daten zu speichern und abzurufen.

JSON-Objekt

JsonObject representiert JObjekt in JSON-Standards in der NCache Domäne. JsonObject enthält ungeordnete Name-Wert-Paare und wird dem Cache mit einem eindeutigen Schlüssel hinzugefügt, der später zum Ausführen von Cache-Vorgängen verwendet wird. Um Cache-Daten als JSON abzurufen, NCache ermöglicht das Abrufen jeder benutzerdefinierten Klasse als JsonObject.

JsonObject im Cache hinzufügen

Sie können ein einfügen JsonObject zum Cache auf folgende Weise. Dieses Beispiel zeigt, wie Sie a füllen JsonObject mit einer serialisierten Zeichenfolge und fügen Sie sie dem Cache hinzu.

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

Rufen Sie JsonObject aus dem Cache ab

NCache ermöglicht das Abrufen eines zwischengespeicherten benutzerdefinierten Objekts in Form einer JsonObject. Dies gibt eine JSON-Zeichenfolge zurück, die die Daten Ihrer benutzerdefinierten Klasse enthält. NCache erlaubt Ihnen auch, a zu cachen JsonObject und rufen Sie es als benutzerdefiniertes Objekt mit derselben Get-API ab. Hier ist ein Beispiel dafür, wie ein benutzerdefiniertes Objekt als JSON-Objekt abgerufen wird:

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

JSON-Array

JsonArray in NCache ist die Darstellung von JArray in JSON-Standards. JsonArray ist eine geordnete Liste von Werten. Diese Werte können Zeichenfolgen, Zahlen, boolesche Werte, Objekte oder andere Arrays sein.

Fügen Sie JsonArray im Cache hinzu

Sie können hinzufügen JsonObject oder sogar ein anderer JsonArray in einem JsonArray. NCache verwendet die indexer-Eigenschaft, um Werte in a hinzuzufügen und zu aktualisieren JsonArray. Sie können eine erstellen JsonArray Verwendung eines JsonObject auf die folgende Weise:

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, können Sie auch JSON-Daten an bestimmten Indizes in a hinzufügen JsonArray. Wenn am angegebenen Index bereits ein Element vorhanden ist, wird es überschrieben. Wenn der angegebene Index nicht vorhanden ist, wird das Element an diesem Index hinzugefügt und alle Werte zwischen dem zuletzt gefüllten Index und dem neuen Index werden auf gesetzt JsonNull (Null in JSON-Standards).

Abrufen JsonArray oder sein besonderer Indexwert

NCache ermöglicht es Ihnen, das gesamte abzurufen JsonArray aus dem Cache oder rufen Sie den Wert aus einem bestimmten Index auf der ab JsonArray. Nach dem Abrufen können Sie sie aufzählen oder indexbasierte Operationen mit den Daten durchführen. So können Sie a abrufen JsonArray oder ein bestimmter Wert aus dem 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);

JSON-Enumerator

NCache Außerdem können Sie JsonEnumerator auf folgende Weise in den Cache laden, um alle JSON-Objekte und JSON-Arrays abzurufen:

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 Mit JSON unterstützte Funktionen

NCache ist ein funktionsreicher verteilter Cache, der viele Funktionen bietet, die Ihnen das Speichern und Abrufen Ihrer Daten erleichtern. Genau wie bei nativen und benutzerdefinierten Objekten NCache unterstützt solche Funktionen auch für Daten vom Typ JSON.

Indizieren Sie JSON-Daten im Cache

NCache ermöglicht Ihnen die Indizierung von JSON-Daten basierend auf ihrem Typ.

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

JSON-Daten im Cache abfragen

Sobald Sie JSON-Daten basierend auf ihrem Typ indiziert haben, können Sie SQL-ähnliche Abfragen ausführen, um die Daten aus dem Cache abzurufen oder zu löschen. Weitere Informationen zur Verwendung all dieser durchsuchbaren Attribute beim Abfragen von JSON-Daten finden Sie in unserer Dokumentation zu JSON-Daten abfragen.

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
        }

Synchronisieren Sie JSON-Daten mit der Datenbank

Beim Speichern von Daten im Cache NCache Damit können Sie sicherstellen, dass die Daten, mit denen Sie arbeiten, nicht veraltet sind. Um dies zu gewährleisten, NCache hat die folgenden Funktionen bereitgestellt, die Ihren Cache und Ihre Datenbank synchron halten.

  • Cache-Abhängigkeiten: NCache unterstützt Cache-Abhängigkeiten von den JSON-Daten, die Daten aus dem Cache entfernen, wenn sie in der Datenbank aktualisiert werden. Lerne mehr über Cache-Datenabhängigkeit auf Datenbank aus unserer Dokumentation.
  • Ablauf: Sie können Ihren JSON-Daten einen zeitbasierten Ablauf hinzufügen, damit Ihr Cache mit der Datenbank synchronisiert wird. Weitere Einzelheiten finden Sie in unserer Dokumentation zu Datenablaufstrategien im Cache.
  • Events in Kürze: NCache stellt Ereignisbenachrichtigungen bereit, die ausgelöst werden, wenn ein registrierter Vorgang an Ihrem JSON-serialisierten Cache oder Ihren JSON-Daten ausgeführt wird. Weitere Einzelheiten finden Sie in unserer Dokumentation zu Ereignisbenachrichtigungen im Cache.
  • Datenquellenanbieter: NCache Ermöglicht die Beibehaltung von JSON-Daten in der Master-Datenquelle und ruft Daten direkt von der Quelle ab, wenn sie nicht im Cache gefunden werden. Weitere Informationen finden Sie in unserer Dokumentation Datenquellenanbieter für Cache um detaillierte Hilfe zu diesen Anbietern zu erhalten.
  • Cache-Startup-Loader: JSON-Daten können mithilfe des Cache Startup Loader automatisch zum Cache hinzugefügt werden, wenn der Cache gestartet wird. Weitere Einzelheiten finden Sie in unserer Dokumentation zu Cache-Startuploader.

JSON-Serialisierung von .NET- und Java-Objekten

Bei der JSON-Serialisierung werden die Objekte bei der Serialisierung in ihr JSON-Äquivalent konvertiert und dann zum Zeitpunkt der Deserialisierung wieder in ihre benutzerdefinierten Objekte konvertiert.

NCache bietet JSON-Serialisierungsunterstützung sowohl für .NET- als auch für Java-Objekte.

  • Sie können ein benutzerdefiniertes Objekt in einem JSON-serialisierten Cache von einem .NET-Client speichern und die Daten über einen Java-Client abrufen JsonObject.
  • Sie können ein benutzerdefiniertes Objekt in einem JSON-serialisierten Cache von einem Java-Client speichern und es über einen .NET-Client als abrufen JsonObject.
  • Sie können ein JSON-Objekt auch in einem nicht JSON-serialisierten Cache von einem .NET-Client speichern und es über einen Java-Client als abrufen JsonObject und umgekehrt.

Nehmen wir an, Sie verfügen über die folgenden Produktattribute in .NET. Sie können dieses Objekt wie unten gezeigt als benutzerdefiniertes Objekt im Cache speichern:

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

Oder serialisieren Sie diese Daten mithilfe der JSON-Serialisierung. Wenn Sie sich für die JSON-Serialisierung entscheiden, werden diese Daten in die folgende JSON-Zeichenfolge serialisiert:

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

Die JSON-Serialisierung ist speichereffizient, portierbar und vollständig automatisiert, sodass Sie für die Implementierung keine Codeänderungen vornehmen müssen. NCache können Sie auch angeben, welche Attribute Sie serialisieren möchten und welche unverändert bleiben sollen.

Was macht man als nächstes?

Bewertung NCache Eigenschaften
Herunterladen NCache
Fordern Sie eine personalisierte LIVE-Demo an
© Copyright Alachisoft 2002 - Alle Rechte vorbehalten NCache ist eine eingetragene Marke der Diyatech Corp.