Client Redis pour C++ : guide complet pour travailler avec hiredis
Redis est une base de données in-memory populaire utilisée pour la mise en cache, la gestion des sessions, les files d'attente de messages et bien plus encore. Pour interagir avec Redis depuis des applications C++, il existe plusieurs bibliothèques, mais la plus répandue et la plus fiable est hiredis. Cette bibliothèque minimaliste, rapide et stable fournit une API C pure qui s'intègre facilement dans les projets C++. Dans cet article, nous allons détailler comment installer hiredis, la connecter à un projet, effectuer des opérations de base avec Redis et gérer les erreurs possibles.
Qu'est-ce que hiredis ?
hiredis est le client C officiel pour Redis, développé par la même équipe que Redis lui-même. Il prend en charge :
- Les connexions synchrones et asynchrones
- La reconnexion automatique en cas de rupture de connexion
- La transmission en flux de commandes (pipelining)
- Le travail avec des données binaires
- La prise en charge complète du protocole Redis (RESP2 et RESP3)
Bien que hiredis soit écrit en C, il convient parfaitement aux projets C++ : il peut être encapsulé dans des classes RAII, utilisé avec les idiomes modernes C++11/17 et facilement combiné avec d'autres bibliothèques.
Installation de hiredis
La méthode la plus simple d'installation est via le gestionnaire de paquets système. Exemples pour différents systèmes d'exploitation :
Ubuntu / Debian
sudo apt updatesudo apt install libhiredis-devmacOS (Homebrew)
brew install hiredisWindows (vcpkg)
vcpkg install hiredisSi vous préférez compiler hiredis à partir des sources (par exemple, pour une configuration personnalisée) :
git clone https://github.com/redis/hiredis.gitcd hiredismakesudo make installConnexion au serveur Redis
Après l'installation de hiredis, vous pouvez la connecter à votre projet C++. Assurez-vous que les chemins vers les fichiers d'en-tête et les bibliothèques sont spécifiés dans les paramètres du compilateur :
-I/usr/include(ou le chemin vershiredis.h)-lhiredispour l'édition de liens
Exemple de code minimal pour se connecter à Redis fonctionnant sur localhost:6379 :
#include <hiredis/hiredis.h>#include <iostream>
int main() { // Connexion à Redis redisContext *c = redisConnect("127.0.0.1", 6379); if (c == nullptr || c->err) { if (c) { std::cerr << "Erreur de connexion : " << c->errstr << std::endl; redisFree(c); } else { std::cerr << "Impossible d'allouer la mémoire pour le contexte" << std::endl; } return 1; } std::cout << "Connexion à Redis établie !" << std::endl;
// Libération des ressources redisFree(c); return 0;}Envoi de commandes et réception de réponses
hiredis fournit la fonction redisCommand pour envoyer des commandes. Elle retourne un pointeur vers redisReply, qui contient le résultat de l'exécution. Vérifiez toujours que la réponse n'est pas nulle et libérez la mémoire après utilisation.
Examinons les opérations de base : définition et récupération d'une valeur de chaîne.
#include <hiredis/hiredis.h>#include <iostream>#include <string>
int main() { redisContext *c = redisConnect("127.0.0.1", 6379); if (!c || c->err) { std::cerr << "Erreur de connexion : " << (c ? c->errstr : "null") << std::endl; return 1; }
// Définition de la clé "myname" avec la valeur "C++ Developer" redisReply *reply = (redisReply*)redisCommand(c, "SET myname 'C++ Developer'"); if (reply == nullptr) { std::cerr << "Erreur d'exécution de la commande SET" << std::endl; redisFree(c); return Aussi dans la bibliothèque
Intégration des métriques Prometheus dans les applications Kotlin : guide complet
Travailler avec Markdown en Go : bibliothèques blackfriday, goldmark et chroma
Travailler avec les dates en Go (Golang) : bibliothèques time, carbon et now
Génération de PDF en C++ : aperçu des bibliothèques et exemples de code
Travailler avec Kafka en C# (.NET) : la bibliothèque Confluent.Kafka