Cliente Redis para C++: visión general y guía práctica
\n\nRedis 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\n1. Biblioteca hiredis
\n\nhiredis 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\nInstalación de hiredis
\nLa 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\nConexión y ejemplo básico
\nPara 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}\nLa compilación se realiza con la bandera -lhiredis:
g++ -o test test.cpp -lhiredis\n\n2. Biblioteca Redis++ (sw/redis++ / redox)
\n\nRedis++ (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.
Instalación de Redis++
\nLa 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\nEjemplo de uso de Redis++
\nLa biblioteca utiliza el objeto Redis para trabajar con comandos:
#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" También en la biblioteca
Biblioteca GraphQL JavaScript (Node.js) — Guía completa
GraphQL en C# (.NET): Guía completa de la biblioteca GraphQL.NET
Limitación de Tasa en C# (.NET): Guía Completa de la Biblioteca System.Threading.RateLimiting
Laravel Passport PHP: guía completa con ejemplos prácticos
Trabajo con XML en Rust: bibliotecas roxmltree, quick-xml y serde-xml-rs