Client Redis pour C++ : aperçu et guide pratique
\n\nRedis est une base de données in-memory haute performance, largement utilisée pour la mise en cache, la gestion de sessions, les files d'attente de messages et l'analyse en temps réel. Pour interagir avec Redis en langage C++, il existe plusieurs bibliothèques matures. Dans cet article, nous examinerons les deux plus populaires : hiredis (le client C officiel, facilement intégrable en C++) et Redis++ (un client C++17 moderne avec une syntaxe pratique). Vous apprendrez comment installer, connecter et utiliser ces outils dans vos projets.
\n\n1. Bibliothèque hiredis
\n\nhiredis est un client C minimaliste, développé par la même équipe que Redis. Il est léger, rapide et prend en charge les requêtes synchrones et asynchrones. Pour les programmeurs C++, hiredis constitue une excellente base, car il peut être appelé directement depuis le code C++, en l'enveloppant dans des objets RAII.
\n\nInstallation de hiredis
\nL'installation de hiredis se fait via un gestionnaire de paquets ou une compilation à partir des sources :
\n# Ubuntu/Debian\nsudo apt-get install libhiredis-dev\n\n# macOS (Homebrew)\nbrew install hiredis\n\n# Compilation à partir des sources\ngit clone https://github.com/redis/hiredis.git\ncd hiredis\nmake\nsudo make install\n\nConnexion et exemple de base
\nPour travailler avec hiredis, il est nécessaire d'inclure le fichier d'en-tête et de lier la bibliothèque. Voici un exemple de connexion à Redis et d'exécution de commandes simples :
\n#include <iostream>\n#include <hiredis/hiredis.h>\n\nint main() {\n // Connexion à Redis sur localhost:6379\n redisContext *c = redisConnect("127.0.0.1", 6379);\n if (c == nullptr || c->err) {\n std::cerr << "Erreur de connexion : " << c->errstr << std::endl;\n return 1;\n }\n\n // Envoi de la commande 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 // Envoi de la commande 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 // Libération des ressources\n redisFree(c);\n return 0;\n}\nLa compilation s'effectue avec le drapeau -lhiredis :
g++ -o test test.cpp -lhiredis\n\n2. Bibliothèque Redis++ (sw/redis++ / redox)
\n\nRedis++ (également connu sous le nom de sw/redis++) est un client C++17 moderne qui offre une interface type-safe, la prise en charge des pools de connexions, des transactions, du pipeline et du Redis Cluster. Si vous préférez écrire en C++ "pur" sans style C, Redis++ est le choix idéal.
Installation de Redis++
\nL'installation se fait via vcpkg, Conan ou une compilation à partir des sources :
\n# Via vcpkg\nvcpkg install redis-plus-plus\n\n# Via Conan\nconan install redis++/1.3.3@\n\n# Compilation à partir des sources\ngit clone https://github.com/sewenew/redis-plus-plus.git\ncd redis-plus-plus\nmkdir build && cd build\ncmake ..\nmake\nsudo make install\n\nExemple d'utilisation de Redis++
\nLa bibliothèque utilise l'objet Redis pour travailler avec les commandes :
#include <iostream>\n#include <sw/redis++/redis++.h>\n\nint main() {\n try {\n // Création du client\n sw::redis::Redis redis("tcp://127.0.0.1:6379");\n\n // Définition d'une valeur\n redis.set("mykey", "Bonjour, Redis++!");\n\n // Récupération de la valeur\n auto val = redis.get("mykey");\n if (val) {\n std::cout << "GET : " << *val << std::endl;\n }\n\n // Travail avec les hachages\n redis.hset("user:1", "name", "Alice");\n redis.hset("user:1", "age" Aussi dans la bibliothèque
Mise en cache en Swift (iOS/macOS) : Redis, NSCache et Core Data
Génération Swagger/OpenAPI sur Kotlin : outils et exemples
Envoi de SMS en Go (Golang) : intégration avec l'API de la bibliothèque
Client Redis pour Kotlin : Lettuce et Kreds — comparaison et exemples