StackExchange.Redis: Conexões avançadas

paulowalravendev

Paulo Walraven

Posted on February 19, 2023

StackExchange.Redis: Conexões avançadas

Introdução

O Redis é um banco de dados de código aberto, muito utilizado em aplicações que necessitam de alto desempenho e baixa latência. Com o pacote StackExchange.Redis, é possível estabelecer conexões avançadas com o Redis, como instâncias do Redis com TLS ativado, implantações de cluster Redis e implantações do Redis Sentinel.

O Redis com TLS ativado é uma opção para quem deseja adicionar uma camada extra de segurança na comunicação com o banco de dados. Já as implantações de cluster Redis são utilizadas quando se precisa lidar com grande quantidade de dados e alta disponibilidade, permitindo que as operações sejam distribuídas entre vários nós. Por fim, as implantações do Redis Sentinel são utilizadas para monitorar e gerenciar instâncias Redis distribuídas, possibilitando uma maior disponibilidade e tolerância a falhas. Cada tipo de conexão possui suas próprias particularidades e benefícios, tornando-se uma opção interessante para diferentes cenários.

Conectando-se a instâncias do Redis com TLS ativado.

Conectando no .NET Core (3.1, 5, 6, 7+)

SslClientAuthenticationOptions foi adicionado como uma forma opcional de configurar um SslStream. Isso fornece uma grande flexibilidade extra quando se trata de definir configurações de TLS Redis.

Usando o delegado SslClientAuthenticationOptions em ConfigurationOptions, você pode configurar:

  • Protocolos SSL/TLS permitidos
  • Conjuntos de cifras TLS/SSL permitidos na negociação de cifras
  • Delegado de seleção de certificado
  • Delegado de validação de certificado
options.SslClientAuthenticationOptions = new Func<string, SslClientAuthenticationOptions>(
hostName => new SslClientAuthenticationOptions
{
        EnabledSslProtocols = SslProtocols.Tls12 | SslProtocols.Tls13
});
Enter fullscreen mode Exit fullscreen mode

Conectando-se a implantações de cluster Redis.

Das Conexões Redis "avançadas", o cluster é provavelmente o mais fácil de entender. Conectar-se a uma instância do OSS Cluster é o mesmo que conectar-se a uma instância autônoma do Redis. A única exceção é que, ao listar endpoints, você desejará usar mais de um. Isso ocorre para que, se o endpoint que você está tentando alcançar tiver falhado, o multiplexador ainda tenha a chance de se conectar às outras instâncias mestre.

Um exemplo de ConfigurationOptions para uma instância de cluster pode parecer algo parecido com isso, observe como a coleção Endpoints usa vários endpoints que o ConnectionMultiplexer pode usar como backups se um dos endpoints falhar ao responder (possivelmente porque falhou).

var options = new ConfigurationOptions
{
    EndPoints = new EndPointCollection{"redis-1:6379", "redis-2:6379", "redis-3:6379"}
};
Enter fullscreen mode Exit fullscreen mode

Conectando-se a implantações do Redis Sentinel

Conectar-se ao Redis Sentinel é um pouco diferente de conectar-se a outras instâncias do Redis.

A principal diferença é que, em vez de se conectar ao servidor mestre, você se conecta a uma das 'sentinelas' - as instâncias do Redis responsáveis por monitorar seu mestre e réplicas, detectar failovers e promover novos mestres. Além disso, você deve especificar o ServiceName, que corresponde ao nome mestre que você instrui os sentinelas a monitorar ao configurá-los.

var options = new ConfigurationOptions
{
    EndPoints = new EndPointCollection{"sentinel-1:26379"},
    ServiceName = "sentinel"
};
var conn = ConnectionMultiplexer.Connect(options);
Enter fullscreen mode Exit fullscreen mode

Conclusão

O pacote StackExchange.Redis oferece suporte a vários tipos de conexões avançadas do Redis, incluindo instâncias com TLS ativado, implantações de cluster Redis e implantações do Redis Sentinel. Com essas opções, os desenvolvedores têm flexibilidade para escolher a melhor abordagem de acordo com as necessidades do seu projeto.

💖 💪 🙅 🚩
paulowalravendev
Paulo Walraven

Posted on February 19, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related