Cliente Redis para C++: guía completa para trabajar con hiredis
Redis es una popular base de datos en memoria utilizada para almacenamiento en caché, gestión de sesiones, colas de mensajes y mucho más. Para interactuar con Redis desde aplicaciones en C++ existen varias bibliotecas, pero la más común y confiable es hiredis. Esta biblioteca minimalista, rápida y estable proporciona una API C pura que se integra fácilmente en proyectos C++. En este artículo analizaremos en detalle cómo instalar hiredis, conectarla a un proyecto, realizar operaciones básicas con Redis y manejar posibles errores.
¿Qué es hiredis?
hiredis es el cliente C oficial para Redis, desarrollado por el mismo equipo que creó Redis. Soporta:
- Conexiones síncronas y asíncronas <>Reconexión automática en caso de desconexión
- Transmisión de comandos en lote (pipelining)
- Trabajo con datos binarios
- Soporte completo del protocolo Redis (RESP2 y RESP3)
Aunque hiredis está escrito en C, es perfectamente adecuado para proyectos C++: se puede envolver en clases RAII, usar con modismos modernos de C++11/17 y combinar fácilmente con otras bibliotecas.
Instalación de hiredis
La forma más sencilla de instalarlo es a través del gestor de paquetes del sistema. Ejemplos para diferentes SO:
Ubuntu / Debian
sudo apt updatesudo apt install libhiredis-devmacOS (Homebrew)
brew install hiredisWindows (vcpkg)
vcpkg install hiredisSi prefiere compilar hiredis desde el código fuente (por ejemplo, para una configuración personalizada):
git clone https://github.com/redis/hiredis.gitcd hiredismakesudo make installConexión al servidor Redis
Después de instalar hiredis, puede conectarla a su proyecto C++. Asegúrese de que en la configuración del compilador se especifiquen las rutas a los archivos de encabezado y las bibliotecas:
-I/usr/include(o la ruta ahiredis.h)-lhiredispara el enlace
Ejemplo de código mínimo para conectarse a Redis ejecutándose en localhost:6379:
#include <hiredis/hiredis.h>#include <iostream>
int main() { // Conectarse a Redis redisContext *c = redisConnect("127.0.0.1", 6379); if (c == nullptr || c->err) { if (c) { std::cerr << "Error de conexión: " << c->errstr << std::endl; redisFree(c); } else { std::cerr << "No se pudo asignar memoria para el contexto" << std::endl; } return 1; } std::cout << "¡Conexión a Redis establecida!" << std::endl;
// Liberar recursos redisFree(c); return 0;}Envío de comandos y obtención de respuestas
hiredis proporciona la función redisCommand para enviar comandos. Devuelve un puntero a redisReply, que contiene el resultado de la ejecución. Siempre verifique que la respuesta no sea nullptr y libere la memoria después de usarla.
Veamos las operaciones básicas: establecer y obtener un valor de cadena.
#include <hiredis/hiredis.h>#include <iostream>#include <string>
int main() { redisContext *c = redisConnect("127.0.0.1", 6379); if (!c || c->err) { std::cerr << "Error de conexión: " << (c ? c->errstr : "null") << std::endl; return 1; }
// Establecer la clave "myname" con el valor "C++ Developer" redisReply *reply = (redisReply*)redisCommand(c, "SET myname 'C++ Developer'"); if (reply == nullptr) { std::cerr << "Error al ejecutar el comando SET" << std::endl; redisFree(c); return También en la biblioteca
NLog para C# (.NET): guía completa con ejemplos prácticos
Generación de PDF en JavaScript: librería pdf-lib
Envío de Email en Java: bibliotecas JavaMail y Simple Java Mail
Juniper: Una elegante biblioteca GraphQL en Rust para aplicaciones web modernas
R.swift en Swift: guía completa con ejemplos prácticos