title: Operações CRUD no cache de dados: uma visão geral description: Gerencie o cache de dados com operações CRUD: sincronização para controle, assíncrona para capacidade de resposta e em massa para desempenho.
canônico: https://www.alachisoft.com/resources/docs/ncache/prog-guide/basic-cache-operations.html
Operações CRUD no cache de dados: uma visão geral
NCache armazena dados como pares chave-valor, ou seja, identificadores exclusivos (chave) são armazenados em relação a um dado (valor). Semelhante a um banco de dados de valor-chave, NCache também armazena, recupera e gerencia dados por meio de operações CRUD. A respeito disso, NCache fornece um conjunto diversificado de APIs CRUD para cache de dados atômicos ou em massa, de forma síncrona ou assíncrona. Aqui, fornecemos uma visão geral NCacheoperações CRUD básicas suportadas: Adicionar, inserção, Get e Eliminar.
Antes de prosseguir, você deve saber o que armazenar no cache de dados. Além dos valores convencionais baseados em strings, NCache permite adicionar tipos de dados primitivos, objetos personalizados, dados com metadados (Item de cache), estruturas de dados e Dados JSON.
Qualquer objeto adicionado ao cache de dados deve ser serializável. NCache lida com a serialização binária e JSON com base no formato da sua loja. Se você não puder executar a serialização binária nativa, NCache também fornece seu próprio Estrutura de serialização compacta. Para a loja JSON, NCache lida com a serialização dos objetos fornecidos. Como alternativa, você pode adicionar NCache objetos serializados JSON fornecidos, que permite suporte para aplicativos multiplataforma e multilíngues.
Tipos de operação no cache de dados
NCache permite operações CRUD em itens individuais ou a granel. Enquanto isso, os modos de operação suportados são síncronos e assíncronos. Aqui, explicamos brevemente os tipos e modos de operação em NCache.
Operações Atômicas
Note
Este recurso também está disponível em NCache Professional.
Categorizamos todas as operações executadas em um único par de valores-chave como operações atômicas. Conseqüentemente, tais operações requerem uma única chamada de cache. O comportamento do atômico adicionar, inserir, remover e ter operações serão discutidas em seções posteriores.
Operações em Massa
Note
Este recurso também está disponível em NCache Professional.
As operações em massa permitem que você execute qualquer operação CRUD em vários itens por meio de uma única chamada de cache. Embora uma operação em massa seja executada como uma única operação, a falha das operações é tratada individualmente. Eles são projetados especificamente para melhorar o desempenho. Por exemplo, recuperar 100 itens de cache em uma única operação em massa é muito mais rápido do que recuperá-los por meio de 100 chamadas atômicas. Desta forma, o desempenho melhora devido a viagens de rede reduzidas para o servidor remoto.
As operações em massa são particularmente úteis para buscar dados armazenados em cache em massa no início de um aplicativo ou inserir um resultado de consulta em massa no cache.
Operações síncronas
Note
Este recurso também está disponível em NCache Professional.
NCache permite adicionar um item atômico ou um volume de itens de forma síncrona. Como as operações síncronas ocorrem como uma chamada de bloqueio, o cliente precisa aguardar a resposta do servidor para executar outras operações. O controle retorna ao aplicativo assim que a operação ocorre.
Embora o cliente precise aguardar a conclusão da operação, as operações de sincronização permitem retornar o status de sucesso/falha da operação à medida que o controle retorna ao usuário. Tal operação pode falhar devido a falha de conexão com o cache ou erros internos do sistema. Esse processo fornece aos aplicativos o controle para lidar com quaisquer cenários de falha assim que eles forem encontrados. Portanto, essas operações são essenciais quando você está processando dados críticos.
Além disso, as operações síncronas são sequenciais. Isso é útil se suas operações dependerem umas das outras. Por exemplo, um site de comércio eletrônico adiciona de forma síncrona itens que estão em promoção relâmpago por apenas 2 horas e, posteriormente, recupera os itens que estão em promoção relâmpago. Ao buscar os itens armazenados em cache à venda, a falha pode ser evitada se garantir que esses itens foram adicionados com sucesso primeiro ao cache de dados. As operações CRUD básicas são síncronas por padrão, salvo indicação em contrário.
Operações assíncronas
As operações assíncronas ocorrem em segundo plano, portanto o cliente não precisa esperar pela resposta do servidor para executar operações adicionais. A lista de ações a serem executadas no cache de dados é mantida em uma fila no lado do cliente, e um thread de segundo plano dedicado continua enviando-as para o lado do servidor. O controle retorna ao aplicativo imediatamente após uma operação ser colocada na fila. Isso aumenta a capacidade de resposta geral do aplicativo.
As operações assíncronas podem ser úteis quando o tempo de resposta é crítico para seu aplicativo e a falha das operações não impede o funcionamento do seu aplicativo.
Como as operações assíncronas não notificam sobre a falha ou o sucesso das próprias operações, as chamadas assíncronas em NCache devolver um objeto do Classe de tarefa que pode ser usado para obter o status da operação. A esse respeito, os seguintes sinalizadores de status são fornecidos pela classe Task para indicar o sucesso ou falha da operação executada.
- Está completo: Notifica se a operação especificada ocorre com sucesso no cache.
- Está com falha: Notifica se a operação especificada ocorre, mas falha.
- Está cancelado: Notifica se a operação especificada foi cancelada devido a algum motivo interno.
CRUD básico em cache de dados
Você pode interagir com o cache assim que obter uma instância de um cache. Vamos ver o funcionamento e o comportamento das operações CRUD básicas suportadas por NCache.
Adicionar/Inserir
Os itens podem ser adicionados ao cache usando Adicionar or inserção método. No entanto, ambas as operações diferem em comportamento. Add
adiciona com sucesso um item ao cache com uma chave específica somente quando a chave fornecida não existe no cache e lança uma exceção caso contrário. Digamos que você queira proibir a adição de um item ao cache por vários clientes ao mesmo tempo. Então você pode usar o Add
método para notificar a falha da operação se um cliente tentar adicionar um item já existente no cache.
Por outro lado, Insert
também funciona como uma operação de atualização. Se você adicionar um item usando o Insert
método e a chave especificada já existe no cache, o item existente no cache é substituído. Além de adicionar itens, ele atualiza com segurança os itens no cache.
O caso mais simples é adicionar ou inserir diretamente um item no cache especificando uma chave e um valor. No entanto, esses métodos possuem várias sobrecargas que permitem adicionar/inserir itens no cache com opções avançadas. Os casos de uso e comportamentos relevantes de Add/Insert são discutidos abaixo.
- Adicionar volume de dados: Uma coleção de dados pode ser adicionada ao cache simultaneamente usando o
AddBulk
/InsertBulk
método.AddBulk
pode ser usado se você solicitar especificamente notificações de falha para adicionar itens com chaves existentes. Nesse sentido, as operações com falha são destacadas individualmente, retornando um dicionário especificando as chaves correspondentes com exceção do aplicativo. Por exemplo, se um volume de 100 itens for adicionado ao cache e 20 desses itens já existirem no cache, os 80 itens restantes serão adicionados ao cache. Os 20 itens existentes serão retornados ao aplicativo como um dicionário de operações com falha.
Caso você queira evitar falhas ao adicionar vários itens para atualizar os itens existentes, você pode usar o InsertBulk
método. Ele substitui os itens existentes no cache e retorna um dicionário de chaves que falharam ao adicionar/atualizar por qualquer motivo.
Adicione dados de forma assíncrona: Os itens podem ser adicionados/inseridos no cache de forma assíncrona quando você deseja melhorar a eficiência do aplicativo cliente.
AddAsync
/InsertAsync
métodos adicionam os itens em segundo plano e retornam o objeto Task assim que a operação for concluída. O cliente pode verificar os sinalizadores de status mencionados em Operações assíncronas para verificar o sucesso ou falha da operação de adição/inserção sem nenhum código extra.Adicione dados com dependências: Você pode adicionar/inserir itens no cache com dependências. Como os dados do cache são temporários, alguns dados podem precisar ser removidos do cache com base em critérios específicos do usuário. Nesse caso, NCache fornece várias maneiras de invalidar dados em cache, permitindo que você defina dependências ao adicionar/inserir itens. Especificamente, você pode definir dependências com base em tempo, dados de cache, banco de dadose fonte externa para invalidar e eventualmente remover determinados itens de acordo com os requisitos do seu aplicativo.
Gravação simultânea: Você pode inserir itens no cache com bloqueio para controlar o acesso simultâneo no caso de aplicativos multithread ou multiclientes. Ele ajuda a manter a integridade dos dados quando as operações de atualização simultâneas são executadas no cache. Você pode bloquear um item exclusivamente ou trabalhar em uma versão do item adicionada ao cache. A versão do item é mantida pelo cache para cada item no cache e é incrementada automaticamente toda vez que a operação de atualização é executada.
Escreva na fonte de dados: Em casos avançados, se a fonte de dados estiver configurada, os dados serão adicionados/atualizados no cache, bem como na fonte de dados durante a operação de adição/inserção.
Fluxo de execução da solicitação: Quando ocorre uma operação de adição/inserção, o processo de execução da solicitação subjacente segue estas etapas: serialização, criptografia e compactação. Primeiro, os dados fornecidos são serializados. Em seguida, ele será criptografado no lado do cliente se a criptografia estiver configurada. Como os dados que trafegam pela rede podem ser facilmente interceptados, você pode criptografar seus dados confidenciais usando NCache Recurso de criptografia de dados para protegê-lo contra riscos de segurança. Por fim, os dados criptografados são compactados se a compactação estiver habilitada. Como a largura de banda e a memória disponíveis são escassas, NCache Recurso de compactação de dados permite reduzir significativamente o tráfego de rede e o consumo de memória. Eventualmente, suas operações de gravação são executadas mais rapidamente.
Get
Principalmente, um cache é considerado eficaz com base em sua capacidade de recuperar dados. Um item pode ser recuperado do cache usando o Get
operação especificando a chave na qual o item foi armazenado. Caso o item especificado não exista no cache, um valor nulo retorna sem exceção.
Obtenha a maior parte dos itens: Vários itens podem ser recuperados do cache simultaneamente usando o
GetBulk
método. Ele recupera os itens encontrados no cache na forma de um dicionário de valor-chave. Nenhuma exceção é lançada se alguma das chaves especificadas não existir no cache.Verifique a existência de itens: como o cache é volátil, talvez seja necessário saber se existe um item no cache ou não. A existência de um item pode ser determinada usando o NCache fornecido
Contains
método. Além disso, a existência de múltiplos itens pode ser verificada através doContainsBulk
método.Obter da fonte de dados: Em casos avançados, se a fonte de dados estiver configurada, os dados serão buscados na fonte de dados se não existirem no cache. Para mais detalhes, você pode consultar o capítulo Provedores de fonte de dados.
Eliminar
Para gerenciar dados obsoletos e armazenamento em cache com eficiência, pode ser necessário remover os dados explicitamente. Você pode facilmente remover itens do cache usando o Remove
método. Se a chave especificada não existir no cache, um valor nulo será retornado. Você também pode obter o item removido para processamento adicional com base nas necessidades da sua aplicação. Porém, o custo de buscar objetos na remoção é inevitável. Portanto, a abordagem prévia é recomendada quando você não precisa dos itens na remoção.
Remover itens em massa: Uma coleção de itens pode ser removida do cache simultaneamente usando o
RemoveBulk
método. Você também pode recuperar os itens removidos com sucesso em um dicionário. No entanto, pode ser lento dependendo do tamanho dos objetos recuperados na remoção. Portanto, é recomendável simplesmente remover os itens, pois é mais eficiente quando você não precisa processar os itens removidos.Remova itens de forma assíncrona: Você pode remover dados atômicos do cache de forma assíncrona usando o
RemoveAsync
método. O item será removido em segundo plano e, após a conclusão da operação, você receberá o status. Caso você queira verificar se aquele item foi removido com sucesso ou não, você pode usar o fornecido sinalizadores de status para operações assíncronas.Remover da fonte de dados: Em casos avançados, se a fonte de dados estiver configurada, a remoção de dados ocorrerá tanto no cache quanto na fonte de dados. Para mais detalhes, você pode consultar o capítulo Provedores de fonte de dados.
Note
Diferentemente dos Remove
e RemoveBulk
, RemoveAsync
não retorna os objetos removidos para o aplicativo.
Nesta secção
Adicionar dados ao cache
Explica como adicionar dados ao cache.
Atualizar dados existentes no cache
Explica como atualizar os dados existentes no cache.
Remover dados do cache
Explica como remover dados do cache.
Recuperar dados de cache existentes
Explica como recuperar dados do cache.