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
- Subscrição do Azure - crie uma gratuitamente
- Visual Studio 2019
- .NET Framework 4 ou superior, que é exigido pelo cliente StackExchange.Redis.
Criar uma cache
Para criar um cache, entre no portal do Azure e selecione Criar um recurso.
Na página Novo, selecione Bancos de Dados e, em seguida, selecione Cache do Azure para Redis.
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. Selecione a guia Rede ou selecione o botão Rede na parte inferior da página.
Na guia Rede, selecione seu método de conectividade.
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 .
- 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.
Selecione a guia Next: Tags ou selecione o botão Next: Tags na parte inferior da página.
Opcionalmente, na guia Marcas , insira o nome e o valor se desejar categorizar o recurso.
Selecione Rever + criar. Você é levado para a guia Revisão + criação, onde o Azure valida sua configuração.
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.
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>.
Crie um arquivo no seu computador chamado CacheSecrets.config e coloque-o C:\AppSecrets\CacheSecrets.config.
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>
Substitua
<host-name>
pelo nome do anfitrião da cache.Substitua
<access-key>
pela chave primária da sua cache.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.
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
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 appSettings
file
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 RunRedisCommandsAsync
Program
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:
Selecione Ferramentas>NuGet Package Manager Package Manager>Console*.
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.
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.
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.