Início Rápido: Utilizar a Cache do Azure para Redis no .NET Framework

Neste início rápido, você incorpora o Cache Redis do Azure em um aplicativo do .NET Framework para ter acesso a um cache dedicado e seguro acessível a partir de qualquer aplicativo no Azure. Você usa especificamente o cliente StackExchange.Redis com código C# em um aplicativo de console .NET.

Saltar para o código no GitHub

Clone o repositório de (https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet no GitHub.

Pré-requisitos

Criar uma cache

  1. Para criar um cache, entre no portal do Azure e selecione Criar um recurso.

    Criar um recurso é realçado no painel de navegação esquerdo.

  2. Na página Novo, selecione Bancos de Dados e, em seguida, selecione Cache do Azure para Redis.

    Em Novo, Bancos de Dados é realçado e o Cache Redis do Azure é realçado.

  3. Na página Novo Cache Redis, defina as configurações para o novo cache.

    Definição Escolher um valor Description
    Subscrição Drop-down e selecione sua assinatura. A assinatura sob a qual criar essa nova instância do Cache do Azure para Redis.
    Grupo de recursos Drop-down e selecione um grupo de recursos, ou selecione Criar novo e insira um novo nome de grupo de recursos. Nome do grupo de recursos no qual criar o cache e outros recursos. Ao colocar todos os recursos do seu aplicativo em um grupo de recursos, você pode facilmente gerenciá-los ou excluí-los juntos.
    Nome DNS Introduza um nome exclusivo. O nome do cache deve ser uma cadeia de caracteres entre 1 e 63 caracteres que contenha apenas números, letras ou hífenes. O nome deve começar e terminar com um número ou letra e não pode conter hífenes consecutivos. O nome de host da instância de cache é <DNS name.redis.cache.windows.net>.
    Location Drop-down e selecione um local. Selecione uma região perto de outros serviços que usam seu cache.
    Tipo de cache Drop-down e selecione uma camada. A camada determina o tamanho, o desempenho e os recursos disponíveis para o cache. Para obter mais informações, consulte Visão geral do Cache do Azure para Redis.
  4. Selecione a guia Rede ou selecione o botão Rede na parte inferior da página.

  5. Na guia Rede, selecione seu método de conectividade.

  6. Selecione a guia Avançar: Avançado ou selecione o botão Avançar: Avançado na parte inferior da página para ver a guia Avançado .

    Captura de ecrã a mostrar o separador Avançadas no painel de trabalho e a opção disponível para selecionar.

    • Para caches Basic ou Standard, alterne a seleção para uma porta não-TLS. Você também pode selecionar se deseja habilitar a Autenticação do Microsoft Entra.
    • Para um cache Premium, defina as configurações para porta não-TLS, clustering, identidade gerenciada e persistência de dados. Você também pode selecionar se deseja habilitar a Autenticação do Microsoft Entra.
  7. Selecione a guia Next: Tags ou selecione o botão Next: Tags na parte inferior da página.

  8. Opcionalmente, na guia Marcas , insira o nome e o valor se desejar categorizar o recurso.

  9. Selecione Rever + criar. Você é levado para a guia Revisão + criação, onde o Azure valida sua configuração.

  10. Depois que a mensagem verde Validação passada for exibida, selecione Criar.

Demora um pouco para um cache ser criado. Você pode monitorar o progresso na página Visão geral do Cache do Azure para Redis. Quando Status é exibido como Em execução, o cache está pronto para uso.

Recuperar nome de host, portas e chaves de acesso do portal do Azure

Para conectar seu servidor Cache do Azure para Redis, o cliente de cache precisa do nome do host, das portas e de uma chave para o cache. Alguns clientes podem mencionar esses itens com nomes ligeiramente diferentes. Você pode obter o nome do host, as portas e as chaves no portal do Azure.

  • Para obter as chaves de acesso, selecione Autenticação no menu Recurso. Em seguida, selecione a guia Teclas de acesso.

    Cache do Azure para chaves Redis

  • Para obter o nome do host e as portas do cache, selecione Visão geral no menu Recurso. O nome do host é do formato <DNS name.redis.cache.windows.net>.

    Propriedades do Cache do Azure para Redis

  1. Crie um arquivo no seu computador chamado CacheSecrets.config e coloque-o C:\AppSecrets\CacheSecrets.config.

  2. Edite o ficheiro CacheSecrets.config e adicione os seguintes conteúdos:

    <appSettings>
        <add key="CacheConnection" value="<host-name>,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/>
    </appSettings>
    
  3. Substitua <host-name> pelo nome do anfitrião da cache.

  4. Substitua <access-key> pela chave primária da sua cache.

  5. Guarde o ficheiro.

Configurar o cliente de cache

Nesta seção, você prepara o aplicativo de console para usar o cliente StackExchange.Redis para .NET.

  1. No Visual Studio, selecione Ferramentas>NuGet Package Manager Package Manager>Console e execute o seguinte comando na janela Console do Gerenciador de Pacotes.

    Install-Package StackExchange.Redis
    
  2. Depois de concluída a instalação, o cliente de cache StackExchange.Redis está disponível para utilizar com o seu projeto.

Conectar-se ao cache de Segredos

No Visual Studio, abra o arquivo App.config para verificar se ele contém um appSettingsfile atributo que faz referência ao arquivo CacheSecrets.config .

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>

    <appSettings file="C:\AppSecrets\CacheSecrets.config"></appSettings>
</configuration>

Nunca guarde as credenciais no código fonte. Para manter este exemplo simples, usamos um arquivo de configuração de segredos externos. Uma melhor abordagem seria utilizar o Azure Key Vault com certificados.

Conectar-se ao cache com RedisConnection

A conexão com o cache é gerenciada RedisConnection pela classe. A conexão é feita pela primeira vez nesta declaração de Program.cs:

     _redisConnection = await RedisConnection.InitializeAsync(connectionString: ConfigurationManager.AppSettings["CacheConnection"].ToString());


O valor da appSetting de CacheConnection serve para referenciar a cadeia de ligação da cache a partir do portal do Azure como o parâmetro de palavra-passe.

No RedisConnection.cs, você vê o StackExchange.Redis namespace com a using palavra-chave. Isso é necessário para a RedisConnection classe.

using StackExchange.Redis;

O RedisConnection código garante que haja sempre uma conexão íntegra com o cache gerenciando a ConnectionMultiplexer instância de StackExchange.Redis. A RedisConnection classe recria a conexão quando uma conexão é perdida e não é possível reconectar automaticamente.

Para obter mais informações, consulte StackExchange.Redis e o código em um repositório GitHub.

Executar comandos de cache

No program.cs, você pode ver o seguinte código para o RunRedisCommandsAsyncProgram método na classe para o aplicativo de console:

private static async Task RunRedisCommandsAsync(string prefix)
    {
        // Simple PING command
        Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: PING");
        RedisResult pingResult = await _redisConnection.BasicRetryAsync(async (db) => await db.ExecuteAsync("PING"));
        Console.WriteLine($"{prefix}: Cache response: {pingResult}");

        // Simple get and put of integral data types into the cache
        string key = "Message";
        string value = "Hello! The cache is working from a .NET console app!";

        Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: GET {key} via StringGetAsync()");
        RedisValue getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync(key));
        Console.WriteLine($"{prefix}: Cache response: {getMessageResult}");

        Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: SET {key} \"{value}\" via StringSetAsync()");
        bool stringSetResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringSetAsync(key, value));
        Console.WriteLine($"{prefix}: Cache response: {stringSetResult}");

        Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: GET {key} via StringGetAsync()");
        getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync(key));
        Console.WriteLine($"{prefix}: Cache response: {getMessageResult}");

        // Store serialized object to cache
        Employee e007 = new Employee("007", "Davide Columbo", 100);
        stringSetResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringSetAsync("e007", JsonSerializer.Serialize(e007)));
        Console.WriteLine($"{Environment.NewLine}{prefix}: Cache response from storing serialized Employee object: {stringSetResult}");

        // Retrieve serialized object from cache
        getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync("e007"));
        Employee e007FromCache = JsonSerializer.Deserialize<Employee>(getMessageResult);
        Console.WriteLine($"{prefix}: Deserialized Employee .NET object:{Environment.NewLine}");
        Console.WriteLine($"{prefix}: Employee.Name : {e007FromCache.Name}");
        Console.WriteLine($"{prefix}: Employee.Id   : {e007FromCache.Id}");
        Console.WriteLine($"{prefix}: Employee.Age  : {e007FromCache.Age}{Environment.NewLine}");
    }


Os itens de cache podem ser obtidos com os métodos StringSetAsync e StringGetAsync.

No exemplo, você pode ver que a Message chave está definida como valor. A aplicação atualizou esse valor em cache. O aplicativo também executou o PING comando e .

Trabalhar com objetos .NET na cache

O servidor Redis armazena a maioria dos dados como cadeias de caracteres, mas essas cadeias de caracteres podem conter muitos tipos de dados, incluindo dados binários serializados, que podem ser usados ao armazenar objetos .NET no cache.

O Cache Redis do Azure pode armazenar em cache objetos .NET e tipos de dados primitivos, mas antes que um objeto .NET possa ser armazenado em cache, ele deve ser serializado.

Esta serialização do objeto .NET é da responsabilidade do programador da aplicação, podendo o programador escolher o serializador pretendido.

Uma maneira simples de serializar objetos é usar os JsonConvert métodos de serialização no System.text.Json.

Adicione o System.text.Json namespace ao Visual Studio:

  1. Selecione Ferramentas>NuGet Package Manager Package Manager>Console*.

  2. Em seguida, execute o seguinte comando na janela Console do Gerenciador de Pacotes.

    Install-Package system.text.json
    

A classe a seguir Employee foi definida em Program.cs para que o exemplo também pudesse mostrar como obter e definir um objeto serializado:

class Employee
{
    public string Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }

    public Employee(string employeeId, string name, int age)
    {
        Id = employeeId;
        Name = name;
        Age = age;
    }
}

Executar o exemplo

Prima Ctrl+F5 para compilar e executar a aplicação de consola para testar a serialização de objetos .NET.

Aplicação de consola concluída

Clean up resources (Limpar recursos)

Se continuar a utilizar este início rápido, pode manter os recursos criados e reutilizá-los.

Caso contrário, se tiver concluído a aplicação de exemplo do início rápido, poderá eliminar os recursos do Azure criados neste início rápido, para evitar encargos.

Importante

A eliminação de um grupo de recursos é irreversível e o grupo de recursos e todos os recursos contidos no mesmo serão permanentemente eliminados. Confirme que não elimina acidentalmente o grupo de recursos ou recursos errados. Se você criou os recursos para hospedar este exemplo dentro de um grupo de recursos existente que contém recursos que você deseja manter, você pode excluir cada recurso individualmente à esquerda em vez de excluir o grupo de recursos.

Inicie sessão no Portal do Azure e selecione Grupos de recursos.

Na caixa de texto Filtrar por nome..., escreva o nome do grupo de recursos. As instruções neste artigo utilizaram um grupo de recursos denominado TestResources. No seu grupo de recursos na lista de resultados, selecione ... e, em seguida , Excluir grupo de recursos.

Delete

Você será solicitado a confirmar a exclusão do grupo de recursos. Digite o nome do grupo de recursos a ser confirmado e selecione Excluir.

Após alguns instantes, o grupo de recursos e todos os recursos contidos no mesmo são eliminados.

Próximos passos