Cliente Redis para C++: conexão, instalação e exemplos de uso

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Cliente Redis para C++: visão geral e guia prático

\n\n

Redis é um banco de dados in-memory de alto desempenho, amplamente utilizado para cache, gerenciamento de sessões, filas de mensagens e análises em tempo real. Para interagir com Redis na linguagem C++, existem várias bibliotecas maduras. Neste artigo, abordaremos as duas mais populares: hiredis (cliente C oficial, facilmente integrável em C++) e Redis++ (cliente C++17 moderno com sintaxe conveniente). Você aprenderá como instalar, conectar e usar essas ferramentas em seus projetos.

\n\n

1. Biblioteca hiredis

\n\n

hiredis é um cliente C minimalista, desenvolvido pela mesma equipe do Redis. É leve, rápido e suporta requisições síncronas e assíncronas. Para programadores C++, hiredis serve como uma excelente base, pois pode ser chamada diretamente do código C++, encapsulando-a em objetos RAII.

\n\n

Instalação do hiredis

\n

A instalação do hiredis é feita através do gerenciador de pacotes ou compilação a partir do código fonte:

\n
# Ubuntu/Debian\nsudo apt-get install libhiredis-dev\n\n# macOS (Homebrew)\nbrew install hiredis\n\n# Compilação a partir do código fonte\ngit clone https://github.com/redis/hiredis.git\ncd hiredis\nmake\nsudo make install
\n\n

Conexão e exemplo básico

\n

Para trabalhar com hiredis, é necessário incluir o arquivo de cabeçalho e linkar com a biblioteca. Abaixo está um exemplo de conexão ao Redis e execução de comandos simples:

\n
#include <iostream>\n#include <hiredis/hiredis.h>\n\nint main() {\n    // Conexão ao Redis em localhost:6379\n    redisContext *c = redisConnect("127.0.0.1", 6379);\n    if (c == nullptr || c->err) {\n        std::cerr << "Erro de conexão: " << c->errstr << std::endl;\n        return 1;\n    }\n\n    // Envio do comando SET\n    redisReply *reply = (redisReply*)redisCommand(c, "SET key1 Hello");\n    if (reply->type == REDIS_REPLY_STATUS) {\n        std::cout << "SET: " << reply->str << std::endl;\n    }\n    freeReplyObject(reply);\n\n    // Envio do comando GET\n    reply = (redisReply*)redisCommand(c, "GET key1");\n    if (reply->type == REDIS_REPLY_STRING) {\n        std::cout << "GET: " << reply->str << std::endl;\n    }\n    freeReplyObject(reply);\n\n    // Liberação de recursos\n    redisFree(c);\n    return 0;\n}
\n

A compilação é feita com a flag -lhiredis:

\n
g++ -o test test.cpp -lhiredis
\n\n

2. Biblioteca Redis++ (sw/redis++ / redox)

\n\n

Redis++ (também conhecida como sw/redis++) é um cliente C++17 moderno que oferece uma interface type-safe, suporte a pool de conexões, transações, pipeline e Redis Cluster. Se você prefere escrever em C++ "puro" sem estilo C, Redis++ é a escolha ideal.

\n\n

Instalação do Redis++

\n

A instalação é feita via vcpkg, Conan ou compilação a partir do código fonte:

\n
# Via vcpkg\nvcpkg install redis-plus-plus\n\n# Via Conan\nconan install redis++/1.3.3@\n\n# Compilação a partir do código fonte\ngit clone https://github.com/sewenew/redis-plus-plus.git\ncd redis-plus-plus\nmkdir build && cd build\ncmake ..\nmake\nsudo make install
\n\n

Exemplo de uso do Redis++

\n

A biblioteca usa o objeto Redis para trabalhar com comandos:

\n
#include <iostream>\n#include <sw/redis++/redis++.h>\n\nint main() {\n    try {\n        // Criação do cliente\n        sw::redis::Redis redis("tcp://127.0.0.1:6379");\n\n        // Definição de valor\n        redis.set("mykey", "Hello, Redis++!");\n\n        // Obtenção de valor\n        auto val = redis.get("mykey");\n        if (val) {\n            std::cout << "GET: " << *val << std::endl;\n        }\n\n        // Trabalho com hashes\n        redis.hset("user:1", "name", "Alice");\n        redis.hset("user:1", "age"                    

Recommendations