Problemas modernos exigem soluções modernas. E a necessidade de desempenho rápido sempre foi um problema. NCache é uma solução rápida para seus problemas críticos, como desempenho e escalabilidade. Ele funciona de forma eficiente e cobre todas as áreas problemáticas em seu aplicativo, embora o cache tenha seu objetivo principal para aplicativos de leitura mais intensa. Este blog explica detalhadamente como NCache é a melhor escolha para seus aplicativos de leitura intensiva.
NCache Adicionar ao carrinho Escalabilidade em NCache NCache Performance
A necessidade de cache
Vamos começar com o início e ver por que o cache é necessário? Sua resposta simples é o tempo de resposta dos bancos de dados. É certo que o armazenamento primário (seu banco de dados) contendo todos os dados em um só lugar pode ficar bloqueado devido a uma taxa de resposta mais alta. O que resolve? Cache – pois fornece armazenamento na memória e um tempo de resposta mais rápido.
Em segundo lugar, diferentemente de um banco de dados, um cache distribuído por natureza não possui um único ponto de falha, a carga é dividida e, portanto, menos chances de solicitações fazendo com que os servidores engasguem.
Considerando os fatos acima que acabamos de discutir, estabelecemos que o cache é o mais adequado para situações em que a intensidade de gravação não é muito alta, mas a intensidade de leitura é relativamente maior.
Vamos considerar um site contendo informações sobre o sistema de transporte. As tarifas de ônibus e os horários são geralmente estáticos, o que significa que não são alterados com frequência. Esses aplicativos com dados de leitura mais intensa têm um rico conjunto de recursos fornecidos por NCache para executar operações de leitura mais rápidas.
NCache Adicionar ao carrinho NCache Para cache de dados High Availability
NCache como um armazenamento de cache intensivo de leitura
Aplicativos com natureza intensiva de leitura, têm NCache para executar todas as operações de leitura o mais rápido possível. NCache tem um rico conjunto de recursos que atendem a todos os tipos de operações de leitura, como buscar itens únicos ou em massa. Depois que o cache recebe dados do banco de dados, todas as operações de busca vão diretamente para o cache para maior desempenho e escalabilidade.
NCache Adicionar ao carrinho Operações CRUD Escalabilidade em NCache
Entre em Operações NCache
NCache fornece várias sobrecargas do Pegue() método para buscar dados do cache em uma chave específica. Essas operações são síncronas por natureza e retornam um objeto de tipo convertido de acordo com sua lógica personalizada. Caso não exista nenhum item no cache, ele retorna null.
Veja o código abaixo onde um cliente deseja ver os detalhes do endereço para se certificar de que estão corretos usando o normal Pegue() método:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Pre-condition: Cache is already running // Items are already present in the cache // Initialize Cache ICache cache = CacheManager.GetCache("demoCache"); string customerKey = "Customer:ALFKI"; // Retrieve the Customer object Customer customer = cache.Get<Customer>(customerKey); if (customer != null) { Console.WriteLine($"Customer: {customer.ContactName}, Address : {customer.Address}"); } |
NCache também permite que o usuário Adicionar, Atualizar e Eliminar dados do cache.
NCache Adicionar ao carrinho Obter operação Operações Atômicas
Obter itens em massa do Cache
Da mesma forma, você também pode buscar itens em massa do cache usando o ObterBulk() método. Usando isso, você pode buscar vários itens do cache usando uma única chamada.
O exemplo abaixo mostra como vários clientes são buscados no cache usando uma única operação.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Pre-condition: Items are already present in the cache // Create an array of all keys to fetch String[] keys = new String[] { "Customer:ALFKI", "Customer:ANATR", "Customer:ANTON", "Customer:AROUT", "Customer:BERGS" }; // Get items from cache IDictionary<string, Customer> retrievedItems = cache.GetBulk<Customer>(keys); // Retrieve customers and their addresses from dictionary foreach (KeyValuePair<string, Customer> retrievedItem in retrievedItems) { Console.WriteLine($"Customer: {retrievedItem.Value.ContactName}, Address : { retrievedItem.Value.Address}"); } |
Além disso, NCache oferece ao usuário Adicionar, inserção e Eliminar dados em massa em uma única chamada.
NCache Adicionar ao carrinho Operações CRUD Operação em massa
Buscar itens usando palavras-chave
Você também pode buscar itens usando palavras-chave anexadas a eles para uma pesquisa eficaz. Você marca seus dados com determinadas palavras-chave baseadas em string e recupera os itens com a ajuda dessas palavras-chave. Por exemplo, você deseja agrupar determinados clientes usando a região à qual pertencem, como Costa Leste ou Costa Oeste. O determinado conjunto de recursos fornecido por NCache para o efeito é:
Tags nomeadas | Tags | Grupos |
---|---|---|
Fornecido em forma de dicionário | Fornecido na forma de uma matriz de tags | Fornecido em forma de string |
Pode ser de qualquer tipo de dados primitivo | Apenas baseado em string | Apenas baseado em string |
No exemplo abaixo, o usuário deseja ver detalhes de todos os clientes com desconto de 12% na associação VIP usando a consulta SQL.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
// Pre-conditions: Items are already present in the cache with named tags // Custom class is query indexed through NCache Web Manager or config.ncconf // Create SQL Query with the specified criteria // Make sure to use the Fully Qualified Name for custom class string query = "SELECT CustomerID, ContactName FROM Alachisoft.NCache.Samples.Data.Customer WHERE VIP_Membership_Discount = 0.12"; // Use QueryCommand for query execution var queryCommand = new QueryCommand(query); // Executing Query ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand); // Read results if result set is not empty if (reader.FieldCount > 0) { while (reader.Read()) { // Get the value of the result set string customerID = reader.GetValue<string>("CustomerID"); string customerName = reader.GetValue<string>("ContactName"); Console.WriteLine($"Customer '{customerName}' with ID '{customerID}' has VIP membership discount."); } } else { Console.WriteLine($"No VIP members found"); } |
Para outras operações usando Tags Nomeadas, consulte NCache Docs.
NCache Adicionar ao carrinho ICacheReader Pesquisar dados de cache com tags nomeadas
Pesquisar cache usando SQL
Para buscar itens de um banco de dados específico, as consultas são uma maneira eficaz de pesquisar com determinados critérios. NCache entende completamente a necessidade de consultas, permitindo que você busque itens do cache usando tipo SQL consultas. Além disso, você precisa índice o item específico no cache, pois não cria índices por conta própria, ao contrário do banco de dados. Mas você está pronto para ir com a consulta SQL assim que os dados forem indexados.
Ele fornece APIs compatíveis com ADO.NET como ExecuteReader, Executar Escalar e Executar sem consulta para pesquisar (SELECT) e remover (DELETE) dados do cache.
A seguir estão as coisas suportadas em NCache consultas:
- Operadores de consulta básicos (=, ==, !=. LIKE, NOT LIKE)
- Operadores lógicos (AND, OR, NOT)
- Funções agregadas (SUM, COUNT, AVG, MIN, MAX)
- Gerais
Observe o código abaixo para ver como as consultas do tipo SQL pesquisam no cache. O exemplo a seguir mostra um usuário que aplicou o filtro para mostrar apenas os produtos com preço unitário inferior a 100.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
//Pre-condition: Items are already present in the cache // Use the Fully Qualified Name (FQN) of your own custom class string query = "SELECT * FROM Alachisoft.NCache.Samples.Data.Product WHERE UnitPrice < ?"; // Use QueryCommand for query execution var queryCommand = new QueryCommand(query); // Providing parameters for query queryCommand.Parameters.Add("UnitPrice", 100.0); // Executing QueryCommand through ICacheReader ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand); // Read results if result set is not empty if (reader.FieldCount > 0) { while (reader.Read()) { // Get key of product item in cache string productKey = reader.GetValue<string>("$KEY$"); // Get product attributes string productName = reader.GetValue<string>("ProductName"); double unitPrice = reader.GetValue<double>("UnitPrice"); Console.WriteLine($"Product '{productName}' with key '{productKey}' has UnitPrice {unitPrice}"); } } else { Console.WriteLine($"No product found with price less than 100"); } |
NCache Adicionar ao carrinho Operações suportadas por SQL Consulta SQL
Pesquisar cache usando LINQ
Assim como o SQL, NCache fornece suporte para escrever consultas em LINQ para pesquisar o cache. NCache O provedor LINQ converte Consultas relacionadas ao LINQ para dentro NCachedo formato SQL estendido e retorna os resultados de acordo depois de transformá-lo no formato LINQ. Existem dois tipos de sintaxe para escrever consultas LINQ:
- Expressão Lambda
- Expressão de consulta LINQ simples
No entanto, assim como o SQL, você precisa definir índices para os dados de cache pesquisáveis para que sua consulta seja executada sem problemas.
Veja o exemplo de código abaixo para ver como a consulta LINQ busca um objeto do cache. O usuário aplicou o filtro para mostrar Bebidas ou Laticínios com pelo menos 10 unidades em estoque.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// Pre-condition: Items are already present in the cache // Create custom class LINQ object IQueryable<Product> products = new NCacheQuery<Product>(cache); // LINQ query to search cache IQueryable<Product> result = from prod in products where (prod.Category == "Beverages" || prod.Category == "Dairy") && prod.UnitsInStock > 10 select prod; if (result != null) { foreach (Product product in result) { Console.WriteLine($"Product '{product.ProductName}' in Category '{product.Category}' has stock of '{product.UnitsInStock}' units"); } } else { Console.WriteLine($"No product found"); } |
NCache Adicionar ao carrinho Consulta LINQ Operadores básicos LINQ
Concluindo o blog
NCache na verdade, é uma solução de armazenamento em cache poderosa para aumentar o desempenho de aplicativos de leitura intensiva. Ele aumenta a velocidade e melhora o desempenho, escalabilidade e confiabilidade com um rico conjunto de recursos. Por favor, verifique outros NCache características do nosso site.
NCache Adicionar ao carrinho Baixar NCache Comparação de edições