Visão geral dos tipos e estratégias de expiração de dados
NCache suporta invalidação de dados baseada em tempo, onde você pode especificar o tempo ou intervalo para expirar seus dados de cache. A invalidação de dados baseada em tempo é aplicável em situações em que é possível determinar a frequência da alteração de dados. Por exemplo, as informações da região podem não ser atualizadas com frequência, portanto você pode usar uma expiração baseada no tempo para invalidar esses dados.
Além disso, a expiração de dados obsoletos do cache resulta no fornecimento de dados relevantes e atualizados ao cliente. Por exemplo, as unidades disponíveis para um determinado produto podem ser alteradas no banco de dados, mas não atualizadas no cache. Conseqüentemente, a expiração de tais dados do cache após um determinado período de tempo resultará em novos dados carregados no cache na próxima solicitação do cliente.
Outro uso da expiração de dados é na manutenção de sessões. Se uma sessão estiver inativa por um determinado período de tempo, ela poderá ser removida do cache, pois está ociosa.
Um valor de expiração é adicionado aos itens de cache. NCache mantém um índice para itens com expiração baseada no tempo. Um thread dedicado verifica os dados do cache desses itens expirados periodicamente após um intervalo de tempo configurável chamado Clean Interval. Por padrão, seu valor é 15 segundos, o que significa que o tempo máximo que um item pode levar para ser removido do cache é (tempo de expiração + intervalo de limpeza + tempo gasto pela atividade de limpeza). Portanto, você deve selecionar esse intervalo com cuidado de acordo com o prazo de validade dos seus dados.
Expiração Absoluta
Você pode adicionar um item ao cache com Expiração Absoluta especificando a data e hora exatas em que o item deve ser invalidado. Decorrido esse tempo, o item será removido do cache. Aqui, NCache mantém o horário UTC para Expiração Absoluta nos servidores de cache, o que facilita o caso em que clientes e servidores de cache estão em fusos horários diferentes. Isso significa que o tempo de expiração especificado pelos clientes (em qualquer fuso horário) será convertido para UTC no servidor de cache e o item expirará na data e hora exatas especificadas pelos clientes. Você pode especificar o tempo de expiração variando de segundos a dias e meses.
Note
Este recurso também está disponível em NCache Professional.
Entretanto, observe que o item será removido quando expirar no próximo intervalo de limpeza de cache. Por exemplo, se você especificar uma expiração de 10 segundos para um item e o intervalo de limpeza do cache estiver configurado para 15 segundos, o item será removido dentro do período de 15 a 25 segundos.
Expiração deslizante
Nesta expiração, você deseja que o cache retenha os dados enquanto estiverem sendo usados pelo aplicativo e remova quaisquer dados que não tenham sido usados por um período específico de tempo. Cada vez que o usuário acessar os dados do cache com Expiração Deslizante, a vida útil do cache se estenderá pelo intervalo de expiração específico, por exemplo, um item com Expiração Deslizante de 30 segundos será removido do cache se o usuário não acessar por pelo menos 30 segundos . Porém, a cada acesso, o intervalo de expiração do item será zerado para 30 segundos, prolongando sua vida útil no cache em 30 segundos.
Note
Este recurso também está disponível em NCache Professional.
Por exemplo, os dados da sessão podem ser armazenados no cache enquanto a sessão estiver ativa. Para esse tipo de dados, você pode especificar a expiração deslizante, digamos 15 minutos. Portanto, se a atividade ocorrer dentro do intervalo de tempo especificado, o intervalo de expiração da sessão será redefinido para 15 minutos no cache.
Semelhante à expiração absoluta, os itens de cache com expiração deslizante são removidos no intervalo de limpeza do cache.
Aviso
Se nenhuma expiração for fornecida com o item de cache, ele residirá no cache até a remoção explícita. Isso pode sobrecarregar o armazenamento em cache.
Consulte também Políticas de despejo que é outra característica NCache para controlar o uso do armazenamento em cache.
Expirações padrão
NCache também oferece suporte a expirações padrão que podem ajudá-lo a definir estratégias de invalidação de dados com mais flexibilidade. As expirações padrão são configuradas por meio do NCache Centro de Gestão ou config.ncconf, portanto, não há necessidade de alterar o código se você quiser alterar o valor de expiração que é passado via API. Além disso, se o mesmo aplicativo exigir vários valores de expiração, as expirações padrão poderão ser usadas.
NCache fornece as seguintes expirações padrão:
- Absoluto padrão
- Deslizar padrão
- Padrão Absoluto Mais Longo
- Deslizamento padrão mais longo
Todas as expirações padrão têm um valor mínimo de 5 segundos.
Vamos supor que o Default Absolute esteja configurado com 5 segundos e o Default Sliding Longer a expiração esteja configurado com 10 segundos. Um objeto do Produto A classe é adicionada ao cache com Default Absolute e uma sessão é adicionada com Default Sliding Longer expiration. Depois que o objeto for adicionado, você deseja alterar o valor de expiração de ambos para 15 segundos. Em vez de reinserir os objetos com os novos valores de expiração, você pode simplesmente alterar a configuração na guia NCache Centro de Gestão ou config.ncconf, sem qualquer alteração de código.
Existem vários cenários em que a configuração da política de expiração por meio do NCache O Management Center e a API se sobreporão e desencadearão os seguintes comportamentos. Observe que a expiração não padrão refere-se à expiração absoluta e móvel.
Expiração padrão | Expiração na chamada da API | Comportamento |
---|---|---|
Configurado | Expiração padrão | Expiração padrão |
Configurado | Expiração não padrão | Expiração não padrão |
Configurado | nenhum | Expiração padrão |
não configurado | Expiração padrão | Sem prazo de validade |
não configurado | Expiração não padrão | Expiração não padrão |
não configurado | nenhum | Sem prazo de validade |
importante
Escolha CacheItem
, o valor padrão de Expiração Absoluta e Deslizante é NoAbsoluteExpiration e NoSlidingExpiration. Portanto, se a Expiração Padrão estiver configurada, mas nenhuma expiração estiver configurada na API com CacheItem
, NENHUMA expiração ocorrerá, pois seu valor de Expiração Padrão substitui a Expiração Padrão configurada.
Expiração em ambiente clusterizado
Em um ambiente de cache clusterizado em que vários servidores de cache estão envolvidos, a expiração é tratada de forma diferente em vários NCache topologias.
- No Espelhado topologia, o nó ativo executará a expiração e a sincronizará no nó passivo.
- No Replicado cache, a expiração é realizada pelo nó coordenador e a operação será então sincronizada com os demais nós do cluster.
- No Particionado topologia, como os dados são distribuídos em nós separados, cada nó é responsável pela expiração de seu próprio item.
- Escolha Réplica de partição topologia, a expiração será realizada em nós ativos e propagada para suas respectivas réplicas.
- Cache do cliente utilizará a mesma expiração habilitada no cache clusterizado. No entanto, a expiração deslizante é adicionada como expiração absoluta quando é sincronizada com o cache, pois causa inconsistência se o valor deslizar no cache clusterizado, mas não no cache do cliente.
Veja também
Expiração absoluta de dados em cache
Expiração deslizante
Despejo