Client Redis pour C++ : connexion, installation et exemples d'utilisation

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Client Redis pour C++ : aperçu et guide pratique

\n\n

Redis 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\n

1. Bibliothèque hiredis

\n\n

hiredis 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\n

Installation de hiredis

\n

L'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\n

Connexion et exemple de base

\n

Pour 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}
\n

La compilation s'effectue avec le drapeau -lhiredis :

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

2. Bibliothèque Redis++ (sw/redis++ / redox)

\n\n

Redis++ (é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.

\n\n

Installation de Redis++

\n

L'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\n

Exemple d'utilisation de Redis++

\n

La bibliothèque utilise l'objet Redis pour travailler avec les commandes :

\n
#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"                    

Recommendations