Consultar datos JSON en caché
Puede consultar datos Json utilizando índices de consulta (como detallamos en los pasos siguientes) o utilizando atributos de búsqueda asociados con ellos. Los atributos buscables incluyen:
- Etiquetas
- Etiquetas con nombre
- Grupos
Note
Esta característica también está disponible en NCache Professional.
Requisitos previos para consultar datos JSON en caché
- Para obtener información sobre los requisitos previos estándar necesarios para trabajar con todos NCache características del lado del cliente, incluidos datos JSON, consulte la página proporcionada en Requisitos previos de la API del lado del cliente.
- Para consultar datos utilizando índices, indexe sus objetos de consulta como se detalla en nuestra Guía de administradores.
- Si ha definido índices, debe proporcionar información de tipo para que el objeto JSON se indexe al crearlo.
- Para obtener detalles de la API, consulte: Dolor, Artículo de caché, ValorJson, JsonObjeto, Grupos, Etiquetas, Etiquetas con nombre, recuadro, Agregar atributo, Recibe, ConsultaComando, Servicio de búsqueda, Ejecutar Lector, Recuento de campo, NamedTagsDiccionario.
Paso 1: Definir índices de datos JSON para consultas
Para consultar datos utilizando índices, indexe sus objetos de consulta como se detalla en nuestra Guía de administradores usando el NCache Centro de gestión o herramientas de línea de comandos. Donde tendrá que especificar un nombre de tipo o clase (como Alachisoft.NCache.Cliente), junto con los atributos que consultará más adelante (por ejemplo, Nombre de la empresa).
Paso 2: Especificar información de tipo para consultas de índice JSON
Debe proporcionar un nombre de tipo (el mismo nombre de tipo que en el índice que definió anteriormente) para consultar el JsonObject
al agregar este objeto al caché. De lo contrario, no podrá realizar ninguna consulta correctamente. Puede aprender cómo especificar este tipo de información en su fragmento de código en nuestra sección sobre Agregar JsonObject al caché con nombre de tipo
Pasos 3: consultar JsonObjects utilizando índices de consulta JSON
Si ha completado los dos pasos anteriores, podrá buscar según el atributo que necesite (por ejemplo, Nombre de la empresa), como se demuestra en los fragmentos de código siguientes. Es necesario agregar información de tipo para garantizar una deserialización y validación adecuadas del objeto recuperado del caché.
// 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 garantizar que la operación sea a prueba de fallas, se recomienda manejar cualquier posible excepción dentro de su aplicación, como se explica en Manejo de fallas.
Consultar JsonObjects con grupos, etiquetas o etiquetas con nombre
Puede añadir JsonObject
en tu caché como CacheItem
. CacheItem
es una clase personalizada proporcionada por NCache que se puede utilizar para agregar datos al caché. CacheItem le permite agregarle varias propiedades, por ejemplo, Cerraduras, Dependencia, Etiquetas, Etiquetas con nombrey Grupos.
advertencia
Un atributo no puede contener una referencia al objeto mismo. Si se hace así, se lanza una excepción.
El siguiente ejemplo agrega un CacheItem
al caché con JsonObject
Local como el valor de la CacheItem
. Las etiquetas se agregan a la CacheItem
y luego el artículo se recupera usando la etiqueta usando un 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 adicionales
NCache proporciona una aplicación de muestra para Cache Data como JSON en GitHub.
Vea también
.NETO: Alachisoft.NCache.Tiempo de ejecución.JSON espacio de nombres
Java: com.alachisoft.ncache.runtime.json espacio de nombres