O ditado “640 KB deve ser suficiente para qualquer um” costumava ser amplamente aceito. Há algum desacordo sobre quem disse isso, mas agora há um acordo universal de que ninguém pode saber o que significa “suficiente” em computação.
Por isso, você deve excluir ou remover alguns dados armazenados em cache ao configurar seus caches com uma estimativa da quantidade de dados que eles podem conter. Sem despejo, se o cache ficar cheio, nenhuma solicitação de entrada para adição de dados será aceita porque nenhum dado está sendo removido do cache.
Figura 1 explica isso em uma ilustração simples:
Ter o despejo ativado significa que seu cache removerá os dados com base no uso ou na prioridade em comparação com outros itens de cache. Isso libera espaço para dados de entrada que podem ser adicionados ao cache assim que itens de prioridade mais antigos/menores são despejados do cache. Figura 2 ilustra isso para maior clareza.
Estaremos discutindo como NCache suporta e lida com diferentes políticas de despejo e como isso pode ser ativado no cache.
NCache Adicionar ao carrinho Configurar despejo - NCache Docs NCache Documentos da API do cliente
Políticas de despejo em NCache
NCache fornece vários tipos de despejo para acomodar qualquer caso de uso.
Menos usado recentemente (LRU)
Uma das políticas de despejo mais utilizadas é LRU. Essa política de despejo permite que os caches eliminem os itens de cache mais antigos que não estão em uso há muito tempo em comparação com os itens acessados recentemente. Os dados são despejados com base em seu último horário de acesso. O tempo de acesso é atualizado como um carimbo de data/hora para cada item de cache quando ele é buscado ou atualizado no cache.
Digamos que seu cache contenha dados de produtos que estão sendo visualizados pelos clientes. Quando o seu cache estiver quase cheio, faz sentido despejar os produtos que não são visualizados há algum tempo.
Usado com menos frequência (LFU)
Essa política de despejo despeja itens de cache usados com menos frequência. Dentro LFU os dados são despejados com base na frequência de uso/número de ocorrências no item. Por exemplo, se um item for acessado 5 vezes, é um candidato mais adequado para despejo do que um item acessado 20 vezes. Isso é útil para cenários em que um item de venda quente está sendo visualizado pelos clientes e você precisa despejar o cache. Despejar um item que não foi acessado tanto quanto o item mais vendido não afetará a experiência do usuário.
Despejo com base em prioridade
Despejo com base em prioridade remove os dados menos importantes do cache primeiro. Se você puder priorizar seus dados de cache, essa política de despejo deve ser adotada para maior controle sobre como os dados são despejados. A prioridade é especificada ao adicionar o item de cache ao cache. Você pode especificar qualquer prioridade dos seguintes níveis de prioridades:
- Baixo
- abaixo do normal
- Normal
- acima do normal
- Alta
- Não removível – Este nível de prioridade especifica que o item de cache não deve ser despejado e só pode ser configurado usando NCache API.
É assim que você pode especificar facilmente a prioridade de cada item ao adicioná-lo ao cache:
1 2 3 4 5 6 7 8 9 |
Product product = FetchProductFromDB(1001); string key = $"Product:{product.ProductID}"; CacheItem cacheItem = new CacheItem(product) { Priority = CacheItemPriority.High }; cache.Add(key, cacheItem); |
NCache Adicionar ao carrinho Configurar despejo - NCache Docs NCache Documentos da API do cliente
Remoção em massa de itens de despejo
Durante o despejo, os itens são removidos em massa para que o desempenho não seja afetado pelo despejo de itens individualmente. NCache oferece a facilidade de personalizar o tamanho do volume e o atraso entre dois despejos em massa consecutivos de acordo com sua necessidade.
No Alachisoft.NCache.Service.exe.config arquivo em %NCHOME%/bin/serviço, você pode definir essas configurações por meio das tags a seguir. Para mais detalhes, consulte a documentação em Definindo as configurações de despejo.
Tamanho em massa para despejo
Você pode especificar o número de itens a serem removidos em uma chamada em massa.
1 |
<add key="NCacheServer.EvictionBulkRemoveSize" value="1000"/> |
Atraso de remoção em massa de despejo
Você pode especificar o atraso (em segundos) entre as chamadas de remoção de despejo conforme mostrado aqui. Um valor de zero significaria nenhum atraso no despejo e os itens continuarão sendo despejados.
1 |
<add key="NCacheServer.EvictionBulkRemoveDelay" value="5"/> |
Ativar o despejo através do Web Manager
Você pode habilitar o despejo por meio de uma série de etapas simples. Depois de habilitar o despejo, você pode personalizar a taxa de despejo (a porcentagem do tamanho total do cache a ser despejado) e especificar a política e a prioridade.
Ativar despejo por meio de arquivos de configuração
Você também pode configurar o despejo por meio de alterações no arquivo de configuração de cache (config.ncconf) Debaixo de <cache-settings>
etiqueta, adicione o seguinte <eviction-policy>
etiqueta, rótulo, palavra-chave:
1 2 3 |
<cache-settings ...> <eviction-policy enabled="True" default-priority="normal" policy="priority" eviction-ratio="5%"/> </cache-settings> |
NCache Adicionar ao carrinho Configurar despejo - NCache Docs Comparação de edições
Despejo em ambiente clusterizado
- Uma vez que o despejo é ativado, o despejo é tratado de forma inteligente por NCache em cada topologia de cache:
- Cache particionado/partição de réplica: In Particionado e Partição de réplica topologias, pois cada nó possui partição de dados, então cada nó é responsável por despejar seus próprios dados. Para o nó de réplica na partição de réplica, os dados são removidos automaticamente quando são removidos do nó ativo.
- Cache replicado: In Replicado topologia, cada nó tem o mesmo conjunto de dados, portanto, apenas o coordenador do cluster é responsável pelo despejo.
- Cache de espelho: In Espelho cache, o nó ativo é responsável por realizar o despejo em todo o cache.
Conclusão
Para que as operações de cache sejam aplicadas no cache sem qualquer interrupção, você precisa garantir que seu cache mantenha dados atualizados e elimine quaisquer dados indesejados. É aí que entra o despejo. Configurar o despejo é simples, e o resto é tratado por NCache si.
NCache Adicionar ao carrinho Baixar NCache Comparação de edições