Cliente Redis para C# (.NET): StackExchange.Redis
\n\nNo desenvolvimento moderno na plataforma .NET, surge frequentemente a necessidade de usar sistemas de cache de alto desempenho e corretores de mensagens. Uma das soluções mais populares é o Redis — um armazenamento de dados in-memory que opera no princípio de "chave-valor". Para interagir com o Redis a partir do C# (.NET), existe uma biblioteca robusta e testada chamada StackExchange.Redis. Ela foi desenvolvida pela empresa Stack Exchange (criadores do Stack Overflow) e suporta todos os principais recursos do Redis, incluindo clusterização, replicação e Pub/Sub.
\n\nO que é StackExchange.Redis?
\n\nStackExchange.Redis é um cliente assíncrono de alto desempenho para Redis, escrito em C#. A biblioteca é otimizada para trabalhar com um grande número de conexões simultâneas e suporta multiplexação — uma única conexão pode atender a várias requisições paralelas sem bloqueios. Isso a torna a escolha ideal para aplicações de alta carga em .NET Core, .NET 5/6/7/8 e .NET Framework.
\n\nInstalação da biblioteca
\n\nA instalação do StackExchange.Redis é feita através do NuGet Package Manager. A maneira mais simples é usar o console do gerenciador de pacotes no Visual Studio ou o dotnet CLI.
\n\ndotnet add package StackExchange.Redis\n\nOu via NuGet:
\n\nInstall-Package StackExchange.Redis\n\nApós a instalação bem-sucedida, uma referência ao assembly é adicionada ao projeto e você pode começar a trabalhar com o Redis.
\n\nConexão ao servidor Redis
\n\nA classe principal para interação é ConnectionMultiplexer. Ela gerencia as conexões com o Redis e lida automaticamente com reconexões, erros de rede e failover para réplicas.
Exemplo de criação de conexão:
\n\nusing StackExchange.Redis;\n\nclass Program\n{\n static async Task Main(string[] args)\n {\n // String de conexão para o Redis local\n string connectionString = "localhost:6379";\n \n // Criando o multiplexador\n using var redis = await ConnectionMultiplexer.ConnectAsync(connectionString);\n \n // Obtendo o banco de dados (por padrão db=0)\n IDatabase db = redis.GetDatabase();\n \n // Verificando a conexão\n bool isConnected = db.Ping().TotalSeconds < 2;\n Console.WriteLine($"Connected: {isConnected}");\n }\n}\n\nA string de conexão pode conter senha, porta, parâmetros SSL e outras opções. Por exemplo, para conectar a um Redis em um servidor remoto com senha:
\n\n"myredis.cloud.com:6380,password=secret123,ssl=true"\n\nOperações básicas com dados
\n\nApós obter uma instância de IDatabase, você pode executar todas as operações padrão do Redis.
Trabalhando com strings
\n\n// Escrevendo uma string\nawait db.StringSetAsync("user:1:name", "Alexei");\n\n// Lendo uma string\nstring name = await db.StringGetAsync("user:1:name");\nConsole.WriteLine(name); // Exibirá: Alexei\n\n// Incrementando um contador\nawait db.StringIncrementAsync("page:visits", 1);\n\nTrabalhando com hashes
\n\n// Definindo campos de um hash\nHashEntry[] userData = {\n new HashEntry("name", "Maria"),\n new HashEntry("age", 28),\n new HashEntry("city", "Moscou")\n};\nawait db.HashSetAsync("user:2", userData);\n\n// Obtendo um campo específico\nstring city = await db.HashGetAsync("user:2", "city");\nConsole.WriteLine(city); // Moscou\n\n// Obtendo todos os campos do hash\nvar allFields = await db.HashGetAllAsync("user:2");\nforeach (var field in allFields)\n{\n Console.WriteLine($"{field.Name}: {field.Value}");\n}\n\nTrabalhando com listas
\n\n// Adicionando elementos à lista (à esquerda)\nawait db.ListLeftPushAsync("notifications", "Primeira notificação");\nawait db.ListLeftPushAsync("notifications", "Segunda notificação");\n\n// Obtendo todos os elementos da lista\nvar Também na biblioteca
Cliente Elasticsearch para Kotlin: integração, exemplos e recursos
Programação Reativa em Kotlin: Biblioteca RxKotlin e Corrotinas
ORM para Java: comparação entre Hibernate, MyBatis, JPA e Spring Data
Registro em JavaScript (Node.js): melhores soluções para o seu projeto