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 do Azure-Samples/azure-cache-redis-samples 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. No menu do portal, selecione Criar um recurso.
No painel Introdução, insira Cache Redis do Azure na barra de pesquisa. Nos resultados da pesquisa, localize o Cache do Azure para Redis e selecione Criar.
No painel Novo Cache Redis, na guia Noções básicas, defina as seguintes configurações para o cache:
Definição Ação Descrição Subscrição Selecione a subscrição do Azure. A assinatura a ser usada para criar a nova instância do Cache do Azure para Redis. Grupo de recursos Selecione um grupo de recursos ou selecione Criar novo e insira um novo nome de grupo de recursos. Um nome para o grupo de recursos no qual criar seu 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 de 1 a 63 caracteres que contenha apenas números, letras e hífenes. O nome deve começar e terminar com um número ou letra, e não pode conter hífenes consecutivas. O nome de host da instância de cache é \<DNS name>.redis.cache.windows.net
.Location Selecione uma localização. Uma região do Azure que está perto de outros serviços que usam seu cache. Cache SKU Selecione uma SKU. A SKU determina o tamanho, o desempenho e os parâmetros de recurso disponíveis para o cache. Para obter mais informações, consulte Visão geral do Cache do Azure para Redis. Tamanho do cache Selecione um tamanho de cache. Para obter mais informações, consulte Visão geral do Cache do Azure para Redis. Selecione a guia Rede ou selecione Avançar: Rede.
Na guia Rede, selecione um método de conectividade a ser usado para o cache.
Selecione a guia Avançado ou selecione Avançar: Avançado.
No painel Avançado, verifique ou selecione um método de autenticação com base nas seguintes informações:
- Por padrão, para um novo cache Básico, Standard ou Premium, a Autenticação do Microsoft Entra está habilitada e a Autenticação de Chaves de Acesso está desabilitada.
- Para caches Basic ou Standard, você pode escolher a seleção para uma porta não-TLS.
- Para caches Standard e Premium, você pode optar por habilitar zonas de disponibilidade. Não é possível desativar as zonas de disponibilidade após a criação do cache.
- Para um cache Premium, defina as configurações para porta não-TLS, clustering, identidade gerenciada e persistência de dados.
Importante
Para uma segurança ideal, recomendamos que você use o Microsoft Entra ID com identidades gerenciadas para autorizar solicitações em seu cache, se possível. A autorização usando o ID do Microsoft Entra e identidades gerenciadas oferece segurança superior e facilidade de uso em relação à autorização de chave de acesso compartilhado. Para obter mais informações sobre como usar identidades gerenciadas com seu cache, consulte Usar a ID do Microsoft Entra para autenticação de cache.
(Opcional) Selecione a guia Tags ou selecione Next: Tags.
(Opcional) Na guia Marcas , insira um nome e um valor de tag se quiser categorizar seu recurso de cache.
Selecione o botão Rever + criar.
Na guia Revisão + criação, o Azure valida automaticamente sua configuração.
Depois que a mensagem verde Validação passada for exibida, selecione Criar.
Uma nova implantação de cache ocorre ao longo de vários minutos. Você pode monitorar o progresso da implantação no painel Visão Geral do Cache do Azure para Redis. Quando Status exibe Em execução, o cache está pronto para uso.
Ativar a autenticação do Microsoft Entra ID no cache
Se você tiver um cache, verifique se a Autenticação do Microsoft Entra foi habilitada. Se não, então habilite-o. Recomendamos o uso do Microsoft Entra ID para seus aplicativos.
No portal do Azure, selecione a instância do Cache do Azure para Redis onde você gostaria de usar a autenticação baseada em token do Microsoft Entra.
Selecione Autenticação no menu Recurso.
Verifique no painel de trabalho se a opção Ativar Autenticação do Microsoft Entra está marcada. Se sim, você pode seguir em frente.
Selecione Ativar Autenticação Microsoft Entra e insira o nome de um usuário válido. O usuário inserido recebe automaticamente a Política de Acesso do Proprietário de Dados por padrão quando você seleciona Salvar. Você também pode inserir uma identidade gerenciada ou uma entidade de serviço para se conectar à sua instância de cache.
Uma caixa de diálogo pop-up é exibida perguntando se você deseja atualizar sua configuração e informando que leva vários minutos. Selecione Yes (Sim).
Importante
Quando a operação enable for concluída, os nós em sua instância de cache serão reinicializados para carregar a nova configuração. Recomendamos realizar esta operação durante a janela de manutenção ou fora do horário comercial de pico. A operação pode demorar até 30 minutos.
Para obter informações sobre como usar o Microsoft Entra ID com a CLI do Azure, consulte as páginas de referências para identidade.
Edite o arquivo App.config e adicione o seguinte conteúdo:
<appSettings> <add key="RedisHostName" value="your_redis_cache_hostname"/>
Substitua "your_Azure_Redis_hostname" pelo nome de host Redis do Azure e números de porta. Por exemplo:
cache-name.eastus.redis.azure.net:10000
para o Cache do Azure para Redis Enterprise ecache-name.redis.cache.windows.net:6380
para o Cache do Azure para serviços Redis.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 Microsoft.Azure.StackExchangeRedis
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 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(redisHostName: ConfigurationManager.AppSettings["RedisHostName"].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 (Ferramentas>NuGet Package Manager>PackageManager 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 quiser continuar a usar os recursos criados neste artigo, mantenha o grupo de recursos.
Caso contrário, se tiver terminado os recursos, pode eliminar o grupo de recursos do Azure que criou para evitar cobranças.
Importante
A eliminação de um grupo de recursos é irreversível. Quando elimina um grupo de recursos, todos os recursos nele contidos são eliminados permanentemente. Confirme que não elimina acidentalmente o grupo de recursos ou recursos errados. Se você criou os recursos dentro de um grupo de recursos existente que contém recursos que deseja manter, poderá excluir cada recurso individualmente em vez de excluir o grupo de recursos.
Para eliminar um grupo de recursos
Inicie sessão no Portal do Azure e selecione Grupos de recursos.
Selecione o grupo de recursos que pretende eliminar.
Se houver muitos grupos de recursos, use a caixa Filtrar para qualquer campo... , digite o nome do grupo de recursos criado para este artigo. Selecione o grupo de recursos na lista de resultados.
Selecione Eliminar grupo de recursos.
É-lhe pedido que confirme a eliminação do grupo de recursos. Escreva o nome do grupo de recursos para confirmar e, em seguida, selecione Eliminar.
Após alguns instantes, o grupo de recursos e todos os respetivos recursos são eliminados.