Interroga i dati JSON nella cache
Puoi eseguire query sui dati JSON utilizzando gli indici di query (come spiegato nei passaggi seguenti) o utilizzando gli attributi ricercabili ad essi associati. Gli attributi ricercabili includono:
- tag
- NamedTag
- ATTIVITA' E GRUPPI
Note:
Questa funzionalità è disponibile anche in NCache Professional.
Prerequisiti per eseguire query sui dati JSON nella cache
- Per conoscere i prerequisiti standard richiesti per lavorare con all NCache Per le funzionalità lato client inclusi i dati JSON fare riferimento alla pagina specificata Prerequisiti dell'API lato client.
- Per eseguire query sui dati utilizzando gli indici, indicizza gli oggetti della query come dettagliato nel nostro Guida per amministratori.
- Se hai definito degli indici, devi fornire informazioni sul tipo per l'oggetto JSON da indicizzare durante la sua creazione.
- Per i dettagli dell'API fare riferimento a: ICache, CacheItem, Json Value, Json Object, ATTIVITA' E GRUPPI, tag, NamedTag, inserire, Aggiungi attributo, Ottieni, QueryCommand, Servizio di ricerca, Esegui Lettore, Conteggio dei campi, NamedTagsDizionario.
Passaggio 1: definizione degli indici di dati JSON per le query
Per eseguire query sui dati utilizzando gli indici, indicizza gli oggetti della query come dettagliato nel nostro Guida per amministratori usando il NCache Centro Gestione o Strumenti da riga di comando. Dove dovrai specificare un nome di tipo o classe (come Alachisoft.NCache.Cliente), insieme agli attributi che verranno interrogati in seguito (ad esempio, CompanyName).
Passaggio 2: specificare le informazioni sul tipo per le query sull'indice JSON
È necessario fornire un nome di tipo (lo stesso nome di tipo dell'indice definito in precedenza) per eseguire la query JsonObject
quando si aggiunge questo oggetto alla cache. In caso contrario, non sarai in grado di eseguire alcuna query con successo. Puoi imparare come specificare questo tipo di informazioni nel tuo snippet di codice nella nostra sezione su Aggiunta di JsonObject alla cache con il nome del tipo
Passaggi 3: eseguire query su JsonObject utilizzando gli indici di query JSON
Se hai completato i due passaggi precedenti, dopodiché puoi cercare in base all'attributo richiesto (ad esempio, CompanyName), come dimostrato negli snippet di codice seguenti. È necessario aggiungere informazioni sul tipo per garantire la corretta deserializzazione e convalida dell'oggetto recuperato dalla cache.
// 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:
Per garantire che l'operazione sia a prova di errore, si consiglia di gestire eventuali potenziali eccezioni all'interno dell'applicazione, come spiegato in Gestione dei guasti.
Interroga JsonObjects con gruppi, tag o tag denominati
È possibile aggiungere JsonObject
nella tua cache come a CacheItem
. CacheItem
è una classe personalizzata fornita da NCache che può essere utilizzato per aggiungere dati alla cache. CacheItem ti consente di aggiungere varie proprietà, ad esempio, Blocco, Dipendenza, tag, NamedTage ATTIVITA' E GRUPPI.
avvertimento
Un attributo non può contenere un riferimento all'oggetto stesso. In tal caso, viene generata un'eccezione.
L'esempio seguente aggiunge a CacheItem
alla cache con JsonObject
come il valore di CacheItem
. I tag vengono aggiunti al CacheItem
e quindi l'elemento viene recuperato utilizzando il tag utilizzando un comando di query.
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
}
Risorse addizionali
NCache fornisce un'applicazione di esempio per i dati della cache come JSON GitHub.
Vedere anche
.NETTO: Alachisoft.NCache.Runtime.JSON spazio dei nomi.
Giava: com.alachisoft.ncache.runtime.json spazio dei nomi.