Consultar dados JSON no cache
Você pode consultar dados Json usando índices de consulta (conforme detalhado nas etapas abaixo) ou usando atributos pesquisáveis associados a eles. Os atributos pesquisáveis incluem:
- Tags
- Named Tags
- Grupos
Note
Este recurso também está disponível em NCache Professional.
Pré-requisitos para consultar dados JSON no cache
- Para aprender sobre os pré-requisitos padrão necessários para trabalhar com todos os NCache recursos do lado do cliente, incluindo dados JSON, consulte a página fornecida em Pré-requisitos da API do lado do cliente.
- Para consultar dados usando índices, indexe seus objetos de consulta conforme detalhado em nosso Guia do administrador.
- Se você tiver índices definidos, deverá fornecer informações de tipo para o objeto JSON a ser indexado ao criá-lo.
- Para detalhes da API, consulte: ICache, Item de cache, JsonValor, JsonObjectName, Grupos, Tags, Named Tags, inserção, Adicionar atributo, Get, Comando de consulta, Serviço de pesquisa, ExecuteReader, Contagem de campo, Named TagsDictionary.
Etapa 1: Definindo Índices de Dados JSON para Consulta
Para consultar dados usando índices, indexe seus objetos de consulta conforme detalhado em nosso Guia do administrador usando o NCache Centro de gerenciamento ou ferramentas de linha de comando. Onde você terá que especificar um nome de tipo ou classe (como Alachisoft.NCache.Customer), juntamente com os atributos que você consultará posteriormente (por exemplo, CompanyName).
Etapa 2: especificar informações de tipo para consultas de índice JSON
Você deve fornecer um nome de tipo (o mesmo nome de tipo do índice definido anteriormente) para consultar o JsonObject
ao adicionar este objeto ao cache. Caso contrário, você não conseguirá realizar nenhuma consulta com êxito. Você pode aprender como especificar esse tipo de informação em seu snippet de código em nossa seção sobre Adicionando JsonObject ao cache com nome de tipo
Etapa 3: consultar JsonObjects usando índices de consulta JSON
Se você tiver concluído as duas etapas anteriores, poderá pesquisar de acordo com o atributo necessário (por exemplo, CompanyName), conforme demonstrado nos trechos de código abaixo. É necessário adicionar informações de tipo para garantir a desserialização e validação adequadas do objeto recuperado do 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
Para garantir que a operação seja à prova de falhas, é recomendável lidar com possíveis exceções em seu aplicativo, conforme explicado em Como lidar com falhas.
Consultar JsonObjects com grupos, tags ou tags nomeadas
Você pode adicionar JsonObject
em seu cache como CacheItem
. CacheItem
é uma classe personalizada fornecida por NCache que pode ser usado para adicionar dados ao cache. CacheItem permite adicionar várias propriedades a ele, por exemplo, Bloqueio, Dependência, Tags, Named Tags e Grupos.
Aviso
Um atributo não pode conter uma referência ao próprio objeto. Se feito isso, uma exceção é lançada.
O exemplo a seguir adiciona um CacheItem
para o cache com JsonObject
Experiência e dinâmica de loja como o valor do CacheItem
. As etiquetas são adicionadas ao CacheItem
e então o item é buscado usando a tag usando um comando de consulta.
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
}
Recursos adicionais
NCache fornece aplicativo de amostra para dados de cache como JSON em GitHub.
Veja também
.INTERNET: Alachisoft.NCache.Tempo de execução.JSON espaço para nome.
Java: com.alachisoft.ncache.runtime.json espaço para nome.