Redis-Client für C++: Verbindung, Installation und Anwendungsbeispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Redis-Client für C++: Überblick und Praxisleitfaden

\n\n

Redis ist eine leistungsstarke In-Memory-Datenbank, die häufig für Caching, Sitzungsverwaltung, Nachrichtenwarteschlangen und Echtzeitanalysen verwendet wird. Für die Interaktion mit Redis in der Sprache C++ gibt es mehrere ausgereifte Bibliotheken. In diesem Artikel betrachten wir die beiden beliebtesten: hiredis (offizieller C-Client, leicht in C++ integrierbar) und Redis++ (moderner C++17-Client mit benutzerfreundlicher Syntax). Sie erfahren, wie Sie diese Tools in Ihren Projekten installieren, einbinden und verwenden.

\n\n

1. Die Bibliothek hiredis

\n\n

hiredis ist ein minimalistischer C-Client, der vom selben Team wie Redis entwickelt wurde. Er ist leichtgewichtig, schnell und unterstützt synchrone und asynchrone Anfragen. Für C++-Programmierer dient hiredis als hervorragende Grundlage, da er direkt aus C++-Code aufgerufen werden kann, indem man ihn in RAII-Objekte einbettet.

\n\n

Installation von hiredis

\n

Die Installation von hiredis erfolgt über den Paketmanager oder durch Kompilieren aus dem Quellcode:

\n
# Ubuntu/Debian\nsudo apt-get install libhiredis-dev\n\n# macOS (Homebrew)\nbrew install hiredis\n\n# Kompilieren aus dem Quellcode\ngit clone https://github.com/redis/hiredis.git\ncd hiredis\nmake\nsudo make install
\n\n

Einbindung und Basisbeispiel

\n

Für die Arbeit mit hiredis muss die Header-Datei eingebunden und mit der Bibliothek gelinkt werden. Nachfolgend ein Beispiel für die Verbindung zu Redis und die Ausführung einfacher Befehle:

\n
#include <iostream>\n#include <hiredis/hiredis.h>\n\nint main() {\n    // Verbindung zu Redis auf localhost:6379\n    redisContext *c = redisConnect("127.0.0.1", 6379);\n    if (c == nullptr || c->err) {\n        std::cerr << "Verbindungsfehler: " << c->errstr << std::endl;\n        return 1;\n    }\n\n    // Senden des SET-Befehls\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    // Senden des GET-Befehls\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    // Ressourcen freigeben\n    redisFree(c);\n    return 0;\n}
\n

Die Kompilierung erfolgt mit dem Flag -lhiredis:

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

2. Die Bibliothek Redis++ (sw/redis++ / redox)

\n\n

Redis++ (auch bekannt als sw/redis++) ist ein moderner C++17-Client, der eine typsichere Schnittstelle, Unterstützung für Verbindungspools, Transaktionen, Pipeline und Redis Cluster bietet. Wenn Sie es vorziehen, in "reinem" C++ ohne C-Stil zu schreiben, ist Redis++ die ideale Wahl.

\n\n

Installation von Redis++

\n

Die Installation erfolgt über vcpkg, Conan oder durch Kompilieren aus dem Quellcode:

\n
# Über vcpkg\nvcpkg install redis-plus-plus\n\n# Über Conan\nconan install redis++/1.3.3@\n\n# Kompilieren aus dem Quellcode\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

Beispiel für die Verwendung von Redis++

\n

Die Bibliothek verwendet das Objekt Redis für die Arbeit mit Befehlen:

\n
#include <iostream>\n#include <sw/redis++/redis++.h>\n\nint main() {\n    try {\n        // Client erstellen\n        sw::redis::Redis redis("tcp://127.0.0.1:6379");\n\n        // Wert setzen\n        redis.set("mykey", "Hallo, Redis++!");\n\n        // Wert abrufen\n        auto val = redis.get("mykey");\n        if (val) {\n            std::cout << "GET: " << *val << std::endl;\n        }\n\n        // Arbeiten mit Hashes\n        redis.hset("user:1", "name", "Alice");\n        redis.hset("user:1", "age"                    

Empfehlungen