Expiração e remoção para o serviço de cache gerenciado do Azure

Importante

A Microsoft recomenda que todos os novos desenvolvimentos usem o Cache Redis do Azure. Para obter documentação e diretrizes atuais sobre como escolher uma oferta do Cache do Azure, confira qual oferta do Cache do Azure é certa para mim?

Microsoft Azure Cache não retém objetos armazenados em cache na memória permanentemente. Além de serem explicitamente removidos do cache pelo uso do método Remove , os objetos armazenados em cache também podem expirar ou ser removidos pelo cache.

Expiração

A expiração do cache permite que o cache remova automaticamente os objetos armazenados do cache. Quando os métodos Put ou Add são usados, um valor opcional de tempo limite de objeto pode ser definido para um determinado objeto armazenado a fim de determinar por quanto tempo ele residirá no cache. Se o valor de tempo limite do objeto não for fornecido quando o objeto é armazenado no cache, esse objeto usará o tempo de expiração padrão. O tempo padrão para Serviço de Cache Gerenciado é de dez minutos.

A Política de Expiração opera em conjunto com a configuração de Tempo (min) para determinar quando os itens em cache expiram. Esses comportamentos são configurados no nível de cache nomeado no Portal de Gerenciamento, na guia Configurar do cache.

Expiry Policy for Windows Azure Cache Service

Há três tipos de políticas de expiração: Absoluta, Deslizante e Nunca.

Política de Expiração Descrição

Never

A expiração é desabilitada. Os itens permanecem no cache até serem removidos. Quando Nunca é especificado, o Tempo (min) deve ser definido como 0.

Absolute

O intervalo de expiração especificado por Tempo (min) começa quando um item é adicionado ao cache. Depois do intervalo especificado por Tempo (min), o item expira.

Deslizante

O intervalo de expiração especificado por Tempo (min) é redefinido cada vez que um item é acessado no cache. O item não expira até o intervalo especificado por Tempo (min) depois do último acesso ao item. Isso mantém os itens usados frequentemente por mais tempo no cache.

Absoluta é a política de expiração padrão e dez minutos é a configuração padrão para Tempo (min). A política de expiração é fixada para cada item em um cache nomeado, mas o Tempo (min) pode ser personalizado para cada item usando sobrecargas Adicionar e Colocar que levam um parâmetro de tempo limite .

Observação

É importante notar o comportamento da expiração Deslizante quando usada em combinação com um cache local. Se um item é lido no cache local, o objeto no cache não é acessado. Portanto, é possível que o item expire no servidor mesmo que esteja sendo lido localmente.

Quando os objetos em cache são bloqueados para fins de simultaneidade, eles não são removidos do cache mesmo que ultrapassem o prazo de expiração. Tão logo sejam desbloqueados, eles serão removidos imediatamente do cache se estiverem além do prazo de expiração.

Para evitar a remoção instantânea quando você desbloqueia objetos expirados, o método Unlock também oferece suporte à extensão da expiração do objeto em cache.

Você pode visualizar a integridade e o desempenho do cache na guia Monitorar do cache no Portal de Gerenciamento, que inclui métricas de remoção e expiração. Para obter mais informações, consulte Monitoramento do serviço de cache usando a guia Monitor.

Invalidação de cache local

Há dois tipos complementares de invalidação para cache local: invalidação baseada em tempo limite e invalidação baseada em notificação.

Dica

Depois que os objetos são armazenados no cache local, o aplicativo pode usá-los até que sejam invalidados, mesmo que sejam atualizados por outro cliente. Por esse motivo, é aconselhável habilitar o cache local para dados que mudam com pouca frequência.

Invalidação baseada em tempo limite

Depois que são baixados para o cache local, os objetos permanecem nele até atingirem o valor de tempo limite de objeto especificado nos parâmetros de configuração do cliente de cache. Quando atingem esse valor de tempo limite, os objetos são invalidados para que possam ser atualizados a partir do cache na próxima vez que forem solicitados.

Invalidação baseada em notificação

Se o cliente de cache habilitou o cache local, também é possível usar notificações de cache para invalidar automaticamente os objetos armazenados em cache localmente. Diminuindo a vida útil desses objetos conforme seja necessário, você pode reduzir a possibilidade de que o seu aplicativo use dados obsoletos.

Observação

As notificações estão disponíveis nas ofertas de cache Standard e Premium, mas não na oferta de cache Basic. Para obter mais informações, consulte Ofertas de Cache para Serviço de Cache Gerenciado do Azure.

Quando você usa notificações de cache, o aplicativo comunica-se com o cache em intervalos regulares para verificar se há novas notificações disponíveis. Por padrão, esse intervalo, chamado de intervalo de consulta, é de 300 segundos. O intervalo de consulta é especificado em unidades de segundos nos parâmetros de configuração do aplicativo. Observe que, mesmo com a invalidação baseada em notificação, os tempos limite continuam a ser aplicáveis aos itens armazenados no cache local. Isso faz com que a invalidação baseada em notificação seja complementar à invalidação baseada em tempo limite.

Para obter mais informações e exemplos, consulte Cache Local para Serviço de Cache Gerenciado do Azure.

Remoção

O suporte à remoção dos objetos menos usados recentemente (LRU) destina-se a manter a capacidade de memória disponível para cache. Quando o consumo de memória está próximo do tamanho da oferta de cache, os objetos são removidos da memória, independentemente de terem expirado ou não, até que a pressão sobre a memória seja aliviada.

Aviso

Se você desabilitar a remoção, correrá o risco de limitação. Nessa condição, a memória excedeu o limite mas não é possível atenuar a escassez de memória. Os clientes que tentarem adicionar itens ao cache nesse estado receberão uma exceção até que ele seja resolvido.

Você pode visualizar a integridade e o desempenho do cache na guia Monitorar do cache no Portal de Gerenciamento, que inclui métricas de remoção e expiração. Para obter mais informações, consulte Monitoramento do serviço de cache usando a guia Monitor.

Há duas configurações para remoção: Habilitada e Desabilitada. A remoção é configurada no nível de cache nomeado no Portal de Gerenciamento, na guia Configurar do cache, e a configuração padrão é Habilitada.

Eviction Policy for Windows Azure Cache Service

Usando código para especificar configurações de expiração e remoção

Os seguintes métodos permitem substituir as configurações padrão no cache:

  • Os métodos Adicionar e Colocar fornecem sobrecargas que permitem especificar um valor de tempo limite de expiração somente para o objeto que você adiciona ao cache.

  • Os métodos PutAndUnlock e Unlock fornecem sobrecargas que permitem estender a expiração de um objeto após desbloqueá-lo.

  • O método ResetObjectTimeout permite estender explicitamente o tempo de vida de um objeto, substituindo as configurações de expiração do cache.

Observação

Sejam quais forem as configurações de expiração ou remoção, os dados do cache não são preservados durante desligamentos inesperados ou falhas do serviço de cache. O código do aplicativo terá que recarregar o cache a partir de uma fonte de dados se os dados não forem encontrados no cache. Isso frequentemente é descrito como um padrão de programação cache-aside.

Consulte Também

Outros recursos

Recursos do serviço de cache gerenciado do Azure