Redis-Client für C++: Überblick und Praxisleitfaden
\n\nRedis 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\n1. Die Bibliothek hiredis
\n\nhiredis 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\nInstallation von hiredis
\nDie 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\nEinbindung und Basisbeispiel
\nFü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}\nDie Kompilierung erfolgt mit dem Flag -lhiredis:
g++ -o test test.cpp -lhiredis\n\n2. Die Bibliothek Redis++ (sw/redis++ / redox)
\n\nRedis++ (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.
Installation von Redis++
\nDie 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\nBeispiel für die Verwendung von Redis++
\nDie Bibliothek verwendet das Objekt Redis für die Arbeit mit Befehlen:
#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" Auch in der Bibliothek
Arbeit mit S3 und Cloud-Speichern in C# (.NET): AWS SDK-Bibliothek
Micrometer Java: Vollständige Anleitung mit Beispielen
Geolokalisierung und Karten in Go (Golang): Bibliotheken und Beispiele
Caching in PHP: Redis, Memcached, APCu und Datei-Caching
Rate Limiting in TypeScript: Bibliotheken, Strategien und Beispiele