StackExchange.Redis: Conexões avançadas
Paulo Walraven
Posted on February 19, 2023
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
});
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"}
};
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);
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.
Posted on February 19, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.