JSON-Daten im Cache abfragen
Sie können JSON-Daten mithilfe von Abfrageindizes (wie in den folgenden Schritten beschrieben) oder damit verknüpften durchsuchbaren Attributen abfragen. Zu den durchsuchbaren Attributen gehören:
- Schlüsselwörter
- Benannte Tags
- Groups
Note
Diese Funktion ist auch in verfügbar NCache Professional.
Voraussetzungen zum Abfragen von JSON-Daten im Cache
- Lernen Sie die Standardvoraussetzungen kennen, die für die Arbeit mit allen erforderlich sind NCache Clientseitige Funktionen einschließlich JSON-Daten finden Sie auf der angegebenen Seite Clientseitige API-Voraussetzungen.
- Um Daten mithilfe von Indizes abzufragen, indizieren Sie Ihre Abfrageobjekte wie in unserem beschrieben Administratorhandbuch.
- Wenn Sie Indizes definiert haben, müssen Sie beim Erstellen Typinformationen für das zu indizierende JSON-Objekt angeben.
- Einzelheiten zur API finden Sie unter: ICache, CacheItem, JsonWert, JsonObject, Groups, Schlüsselwörter, Benannte Tags, Insert, Attribute hinzufügen, Erhalten Sie , Abfragebefehl, Suchdienst, ExecuteReader, FieldCount, NamedTagsWörterbuch.
Schritt 1: Definieren von JSON-Datenindizes für die Abfrage
Um Daten mithilfe von Indizes abzufragen, indizieren Sie Ihre Abfrageobjekte wie in unserem beschrieben Administratorhandbuch Verwendung der NCache Management Center oder Befehlszeilentools. Wo Sie einen Typnamen oder eine Klasse angeben müssen (z. B Alachisoft.NCache.Customer) zusammen mit den Attributen, die Sie später abfragen (z. B. CompanyName).
Schritt 2: Geben Sie Typinformationen für JSON-Indexabfragen an
Sie müssen einen Typnamen angeben (denselben Typnamen wie im Index, den Sie zuvor definiert haben), um den abzufragen JsonObject
beim Hinzufügen dieses Objekts zum Cache. Andernfalls können Sie keine Abfragen erfolgreich durchführen. In unserem Abschnitt erfahren Sie, wie Sie diese Art von Informationen in Ihrem Code-Snippet angeben Hinzufügen von JsonObject zum Cache mit Typname
Schritte 3: JsonObjects mithilfe von JSON-Abfrageindizes abfragen
Wenn Sie die beiden vorherigen Schritte abgeschlossen haben, können Sie anschließend nach dem gewünschten Attribut (z. B. Firmenname) suchen, wie in den folgenden Codeausschnitten gezeigt. Es ist notwendig, Typinformationen hinzuzufügen, um eine ordnungsgemäße Deserialisierung und Validierung des aus dem Cache abgerufenen Objekts sicherzustellen.
// Preconditions:
// (1) Cache is already connected
// (2) Cache is JSON Serialized
// Retrieve the CacheItem using the CompanyName with a query
string query = "SELECT * FROM Alachisoft.NCache.Customer WHERE $CompanyName$ = ?";
var queryCommand = new QueryCommand(query);
queryCommand.Parameters.Add("$CompanyName$", "CustomerItem");
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 containing the given CompanyName exist
}
Note
Um sicherzustellen, dass der Vorgang ausfallsicher ist, wird empfohlen, alle potenziellen Ausnahmen in Ihrer Anwendung zu behandeln, wie in erläutert Umgang mit Fehlern.
Fragen Sie JsonObjects mit Gruppen, Tags oder benannten Tags ab
Sie können hinzufügen JsonObject
in deinem Cache als CacheItem
. CacheItem
ist eine benutzerdefinierte Klasse, die von bereitgestellt wird NCache mit dem Daten zum Cache hinzugefügt werden können. Mit CacheItem können Sie verschiedene Eigenschaften hinzufügen, z. B. Sperrung, Abhängigkeit, Schlüsselwörter, Benannte Tags und Groups.
Warnung
Ein Attribut darf keine Referenz auf das Objekt selbst enthalten. In diesem Fall wird eine Ausnahme ausgelöst.
Im folgenden Beispiel wird a hinzugefügt CacheItem
zum Cache mit JsonObject
Kundenfälle als der Wert des CacheItem
. Tags werden hinzugefügt CacheItem
und dann wird das Element unter Verwendung des Tags unter Verwendung eines Abfragebefehls abgerufen.
Customer customer = FetchCustomerFromDB(1001);
// Create a unique key for the object
string key = $"Customer:{customer.CustomerID}";
// Create a new JSON object and set attributes
// string values need to be added with JsonValue
var jsonCustomer = new JsonObject("Alachisoft.NCache.Customer");
jsonCustomer.AddAttribute("CustomerID", customer.CustomerID);
jsonCustomer.AddAttribute("ContactName", (JsonValue)customer.ContactName);
jsonCustomer.AddAttribute("CompanyName", (JsonValue)customer.CompanyName);
jsonCustomer.AddAttribute("Phone", customer.Phone);
jsonCustomer.AddAttribute("Address", customer.Address);
// Create a new CacheItem
var item = new CacheItem(jsonCustomer);
// Add Tag to the cacheItem
item.Tags = new Tag[] { new Tag("CustomerItem") };
// Add CacheItem in the cache with the value
cache.Insert(key, item);
// Retrieve the CacheItem using the tag with a query
string query = "SELECT * FROM Alachisoft.NCache.Customer WHERE $Tag$ = ?";
var queryCommand = new QueryCommand(query);
queryCommand.Parameters.Add("$Tag$", "CustomerItem");
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 containing the named tag(s) exist
}
Weitere Informationen
NCache bietet eine Beispielanwendung für Cache-Daten als JSON an GitHub.
Siehe auch
.NETZ: Alachisoft.NCache.Laufzeit.JSON Namespace.
Java: com.alachisoft.ncache.runtime.json Namespace.