Suporte JSON em NCache

NCache fornece suporte JSON, uma sintaxe estruturada, legível e leve para análise e compartilhamento de dados. A maior facilidade proporcionada NCache para você por meio de dados de cache como JSON é a flexibilidade de recuperar dados de qualquer classe personalizada em seu cache como JSON. Além disso, os dados podem ser adicionados como JSON e recuperados e analisados ​​como uma classe personalizada.

NCache suporta JSON por meio de:

API JSON em NCache

NCache permite adicionar e recuperar dados de cache no formato JSON. NCache suporta várias estruturas JSON para inserir e buscar dados JSON com eficiência. Essas estruturas são:

  • Objeto JSON
  • Matriz JSON

Ambas as estruturas são derivadas de uma classe abstrata chamada JsonValueBase. Os parágrafos a seguir explicam essas classes e seu uso em NCache para armazenar e recuperar dados.

Objeto JSON

JsonObjectName representa JObject em padrões JSON no NCache domínio. JsonObjectName contém pares nome-valor não ordenados e é adicionado ao cache em uma chave exclusiva que é posteriormente usada para executar operações de cache. Para recuperar dados de cache como JSON, NCache permite que qualquer classe personalizada seja recuperada como um JsonObjectName.

Adicionar JsonObject no Cache

Você pode inserir um JsonObjectName para o cache da seguinte maneira. Este exemplo mostra como preencher um JsonObjectName com uma string serializada e adicione-a ao cache.

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

Recuperar JsonObject do Cache

NCache permite que você recupere um objeto personalizado em cache na forma de um JsonObjectName. Isso retorna uma string JSON contendo os dados de sua classe personalizada. NCache também permite armazenar em cache um JsonObjectName e busque-o como um objeto personalizado usando a mesma API Get. Aqui está um exemplo de como recuperar um objeto personalizado como um objeto JSON:

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

Matriz JSON

JsonArrayName in NCache é a representação de JArray nos padrões JSON. JsonArrayName é uma lista ordenada de valores. Esses valores podem ser string, number, boolean, object ou outro array.

Adicionar JsonArray no Cache

Você pode adicionar JsonObjectName ou mesmo outro JsonArrayName em uma JsonArrayName. NCache usa a propriedade do indexador para adicionar e atualizar valores em um JsonArrayName. Você pode criar um JsonArrayName utilizando um JsonObjectName Da seguinte maneira:

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, você também pode adicionar dados JSON em índices especificados em um JsonArrayName. Se um item já existir no índice especificado, ele será substituído. Se o índice especificado não existir, o item será adicionado a esse índice e todos os valores entre o último índice preenchido e o novo índice serão definidos como JsonNullGenericName (nulo nos padrões JSON).

Recuperar JsonArrayName ou seu valor de índice específico

NCache permite que você obtenha todo o JsonArrayName do cache ou recuperar o valor de um índice específico no JsonArrayName. Uma vez recuperado, você pode enumerá-lo ou realizar operações baseadas em índice nos dados. É assim que você pode buscar um JsonArrayName ou um valor específico do 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);

Enumerador JSON

NCache também permite que você coloque JsonEnumerator no cache para buscar todos os objetos JSON e matrizes JSON da seguinte maneira:

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 Recursos compatíveis com JSON

NCache é um cache distribuído rico em recursos que fornece muitos recursos para facilitar o armazenamento e a recuperação de seus dados. Assim como para objetos nativos e personalizados, NCache também oferece suporte a esses recursos para dados do tipo JSON.

Indexar dados JSON no cache

NCache permite indexar dados JSON com base em seu tipo.

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

Consultar dados JSON no cache

Depois de indexar os dados JSON com base em seu tipo, você pode realizar consultas semelhantes a SQL para buscar ou excluir os dados do cache. Para obter mais informações sobre como usar todos esses atributos pesquisáveis ​​ao consultar dados JSON, consulte nossa documentação em Consultar dados JSON.

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
        }

Sincronizar dados JSON com banco de dados

Ao armazenar dados no cache, NCache permite garantir que os dados com os quais você está trabalhando não estejam obsoletos. Para garantir isso, NCache forneceu os seguintes recursos que mantêm seu cache e banco de dados sincronizados.

  • Dependências de cache: NCache suporta dependências de cache nos dados JSON que removem dados do cache se forem atualizados no banco de dados. Aprender mais sobre Dependência de dados de cache no banco de dados de nossa documentação.
  • Expiração: Você pode adicionar expiração baseada em tempo aos seus dados JSON para que seu cache seja sincronizado com o banco de dados. Para obter mais detalhes, consulte nossa documentação em Estratégias de expiração de dados em cache.
  • Eventos: NCache fornece notificações de eventos que são acionadas quando qualquer operação registrada é executada no cache serializado JSON ou nos dados JSON. Para obter mais detalhes, consulte nossa documentação em Notificações de eventos no cache.
  • Provedores de fonte de dados: NCache permite persistir dados JSON na fonte de dados mestre e busca dados diretamente da fonte se não forem encontrados no cache. Consulte nossa documentação em Provedores de fonte de dados para cache para obter ajuda detalhada sobre esses provedores.
  • Carregador de inicialização de cache: Os dados JSON podem ser adicionados automaticamente ao cache quando o cache é iniciado usando o Cache Startup Loader. Para obter mais detalhes, consulte nossa documentação em Carregador de inicialização de cache.

Serialização JSON de objetos .NET e Java

Na serialização JSON, os objetos são convertidos em seu equivalente JSON quando serializados e, em seguida, convertidos novamente em seus objetos personalizados no momento da desserialização.

NCache fornece suporte de serialização JSON para objetos .NET e Java.

  • Você pode armazenar um objeto personalizado em um cache serializado JSON de um cliente .NET e buscar os dados por meio de um cliente Java como JsonObjectName.
  • Você pode armazenar um objeto personalizado em um cache serializado JSON de um cliente Java e recuperá-lo por meio de um cliente .NET como um JsonObjectName.
  • Você também pode armazenar um objeto JSON em um cache serializado não JSON de um cliente .NET e recuperá-lo por meio de um cliente Java como um JsonObjectName e vice-versa.

Vamos considerar que você tem os seguintes atributos de produto em .NET. Você pode armazenar este objeto no cache como um objeto personalizado conforme mostrado abaixo:

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

Ou serialize esses dados usando a serialização JSON. Ao optar pela serialização JSON, esses dados serão serializados para a seguinte string JSON:

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

A serialização JSON é eficiente em termos de memória, portátil e totalmente automatizada, não exigindo nenhuma alteração de código para sua implementação. NCache também permite especificar quais atributos você deseja serializar e quais deixar como estão.

O que fazer a seguir?

Avaliações NCache Funcionalidades
Baixar NCache
Solicite uma demonstração AO VIVO personalizada
© Copyright Alachisoft 2002 - . Todos os direitos reservados. NCache é uma marca registrada da Diyatech Corp.