Sobre cache na função para cache 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?

In-Role Cache dá suporte à capacidade de hospedar serviços de cache em funções do Azure. Neste modelo, o cache faz parte de seu serviço em nuvem. Uma função dentro do serviço de nuvem é selecionada para hospedar In-Role Cache. As instâncias dessa função em execução unem os recursos de memória para formar um cluster de cache. Esse cluster privado de cache está disponível somente para as funções dentro da mesma implantação. Há duas topologias de implantação principais para In-Role Cache: co-localizadas e dedicadas. As funções colocalizadas também hospedam código e serviços de outros aplicativos que não usam cache. Funções dedicadas são funções de trabalho que são usadas apenas para cache. Os tópicos a seguir discutem essas topologias de cache com mais detalhes.

Para obter um passo a passo do cache de In-Role baseado em função, consulte Como usar o Cache de In-Role do Azure. Para obter exemplos para download, consulte exemplos de cache do Azure In-Role.

Conceitos de cache In-Role

Esta seção fornece uma visão geral de três conceitos principais relacionados ao Cache In-Role baseado em função.

  1. Cluster de cache

  2. Caches nomeados

  3. Clientes de cache

Cluster de cache

As funções do Azure têm uma ou mais instâncias. Cada instância é uma máquina virtual configurada para hospedar a função especificada. Quando uma função que tem In-Role Cache habilitado é executada em várias instâncias, um cluster de cache é formado. Um cluster de cache é um serviço de cache distribuído que usa a memória combinada de todas as máquinas no cluster. Os aplicativos podem adicionar e recuperar itens do cluster de cache sem terem que saber em qual máquina esses itens estão armazenados. Quando a alta disponibilidade está habilitada, uma cópia de backup do item é armazenada automaticamente em outra instância de máquina virtual.

Observação

Só há suporte a um cluster de cache para cada serviço de nuvem. É possível configurar vários clusters de cache em um serviço de nuvem especificando contas de armazenamento separadas para cada função. Essa configuração, porém, não tem suporte.

Ao habilitar In-Role Cache em uma função do Azure, especifique a quantidade de memória que pode ser usada para cache. Em um cenário colocalizado, você escolhe a porcentagem da memória disponível nas máquinas virtuais que hospedam a função. Em um cenário dedicado, toda a memória disponível nas máquinas virtuais é usada para cache. Entretanto, a memória disponível sempre é menor que a memória física total na máquina virtual devido aos requisitos de memória do sistema operacional.

Portanto, a quantidade total de memória de cache depende da memória de função reservada para o cache multiplicado pelo número de funções. Você pode dimensionar efetivamente a memória de cache total para cima ou para baixo aumentando ou diminuindo o número de instâncias em execução para essa função.

Aviso

Ao reduzir o dimensionamento das instâncias em execução da função que hospeda In-Role Cache, reduza a contagem de instâncias em no máximo três por vez. Quando a alteração for concluída, você poderá remover até três instâncias em execução adicionais; repita o procedimento até atingir o número necessário de instâncias em execução. O dimensionamento com redução de mais de três instâncias provoca instabilidade no cluster de cache.

Cada cluster de cache mantém informações compartilhadas sobre o estado de runtime do cluster no armazenamento do Azure. Durante o desenvolvimento, você pode usar o emulador de armazenamento do Azure. As funções implantadas devem especificar uma conta de armazenamento válida do Azure. Em Visual Studio, você pode especificar a conta de armazenamento apropriada na guia Caching das propriedades da função.

Caches nomeados

Cada cluster de cache tem pelo menos um cache chamado default. Com o Cache In-Role baseado em função, você também pode adicionar caches nomeados adicionais. Existem várias configurações que podem ser alteradas para cada cache. A captura de tela a seguir mostra a seção Configurações Cache Nomeado da guia Caching nas configurações de função Visual Studio.

Caching Properties for Named Caches

Em Visual Studio, clique no botão Adicionar Cache Nomeado para adicionar caches nomeados adicionais. No exemplo anterior, dois caches adicionais foram criados, NamedCache1 e NamedCache2. Cada cache tem configurações diferentes. Altere as configurações selecionando e modificando os campos específicos na tabela.

Os caches nomeados fornecem flexibilidade aos designers de aplicativos. Cada cache nomeado tem suas próprias propriedades. Por exemplo, um cache pode habilitar a Alta Disponibilidade para tirar proveito desse recurso. Outros caches podem não precisar da alta disponibilidade, que requer o dobro de memória para cada item em cache. Para fazer melhor uso dos recursos, a alta disponibilidade deve ser usada somente nos caches que precisam disso. Existem outros cenários semelhantes em que vários caches podem ser usados com diferentes propriedades para atender aos requisitos do aplicativo.

Clientes de cache

Um cliente de cache é qualquer código de aplicativo que armazena e recupera itens no cluster de cache. Com In-Role Cache em funções, os clientes de cache devem fazer parte da mesma função de cache ou incorporados a outras funções na implantação. Configure os clientes de cache usando os arquivos de configuração do aplicativo ou da Web. Para obter mais informações, consulte Como preparar Visual Studio para usar o Cache In-Role do Azure. O exemplo a seguir mostra o elemento dataCacheClient em um arquivo de configuração.

<dataCacheClients>
  <dataCacheClient name="default">
    <autoDiscover isEnabled="true" identifier="CachingRole1" />
    <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
  </dataCacheClient>
</dataCacheClients>

No exemplo anterior, o elemento autoDiscover tem um atributo de identificador definido como CachingRole1. Esse identificador especifica que o CachingRole1 cache de In-Role está habilitado. Ele fornece a localização do servidor de cache. O cliente de cache usa CachingRole1 automaticamente em qualquer operação de cache.

Depois de ser configurado, o cliente de cache pode acessar qualquer cache pelo nome. O exemplo a seguir acessa o cache NamedCache1 e adiciona um item a ele.

DataCache cache = new DataCache("NamedCache1", "default");
cache.Put("testkey", "testobject");

O construtor DataCache usa dois parâmetros: o nome do cache e o nome da seção dataCacheClient . Para obter informações sobre o nome do cache, consulte a seção anterior em Caches Nomeados.

Nesta seção

Consulte Também

Conceitos

Cache