Cliente Redis para C++: conexión, instalación y ejemplos de uso

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Cliente Redis para C++: visión general y guía práctica

\n\n

Redis es una base de datos in-memory de alto rendimiento, ampliamente utilizada para almacenamiento en caché, gestión de sesiones, colas de mensajes y análisis en tiempo real. Para interactuar con Redis en el lenguaje C++, existen varias bibliotecas maduras. En este artículo, analizaremos las dos más populares: hiredis (el cliente oficial en C, fácilmente integrable en C++) y Redis++ (un cliente moderno en C++17 con una sintaxis conveniente). Aprenderá cómo instalar, conectar y utilizar estas herramientas en sus proyectos.

\n\n

1. Biblioteca hiredis

\n\n

hiredis es un cliente minimalista en C, desarrollado por el mismo equipo que creó Redis. Es ligero, rápido y admite solicitudes síncronas y asíncronas. Para los programadores de C++, hiredis sirve como una excelente base, ya que se puede llamar directamente desde código C++, envolviéndolo en objetos RAII.

\n\n

Instalación de hiredis

\n

La instalación de hiredis se realiza a través del gestor de paquetes o compilando desde el código fuente:

\n
# Ubuntu/Debian\nsudo apt-get install libhiredis-dev\n\n# macOS (Homebrew)\nbrew install hiredis\n\n# Compilación desde el código fuente\ngit clone https://github.com/redis/hiredis.git\ncd hiredis\nmake\nsudo make install
\n\n

Conexión y ejemplo básico

\n

Para trabajar con hiredis, es necesario incluir el archivo de cabecera y enlazar con la biblioteca. A continuación, se muestra un ejemplo de conexión a Redis y ejecución de comandos simples:

\n
#include <iostream>\n#include <hiredis/hiredis.h>\n\nint main() {\n    // Conexión a Redis en localhost:6379\n    redisContext *c = redisConnect("127.0.0.1", 6379);\n    if (c == nullptr || c->err) {\n        std::cerr << "Error de conexión: " << c->errstr << std::endl;\n        return 1;\n    }\n\n    // Envío del 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    // Envío del 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    // Liberación de recursos\n    redisFree(c);\n    return 0;\n}
\n

La compilación se realiza con la bandera -lhiredis:

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

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

\n\n

Redis++ (también conocida como sw/redis++) es un cliente moderno en C++17 que proporciona una interfaz con seguridad de tipos, soporte para pool de conexiones, transacciones, pipeline y Redis Cluster. Si prefiere escribir en C++ "puro" sin el estilo de C, Redis++ es la elección ideal.

\n\n

Instalación de Redis++

\n

La instalación se realiza a través de vcpkg, Conan o compilando desde el código fuente:

\n
# A través de vcpkg\nvcpkg install redis-plus-plus\n\n# A través de Conan\nconan install redis++/1.3.3@\n\n# Compilación desde el código fuente\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

Ejemplo de uso de Redis++

\n

La biblioteca utiliza el objeto Redis para trabajar con comandos:

\n
#include <iostream>\n#include <sw/redis++/redis++.h>\n\nint main() {\n    try {\n        // Creación del cliente\n        sw::redis::Redis redis("tcp://127.0.0.1:6379");\n\n        // Establecer un valor\n        redis.set("mykey", "Hello, Redis++!");\n\n        // Obtener un valor\n        auto val = redis.get("mykey");\n        if (val) {\n            std::cout << "GET: " << *val << std::endl;\n        }\n\n        // Trabajar con hashes\n        redis.hset("user:1", "name", "Alice");\n        redis.hset("user:1", "age"                    

Recommendations