Frage

Was wäre der beste Weg, um eine Redis DB in einem C ++ Programm zu benutzen?

War es hilfreich?

Lösung

Mit einer C-Bindungen Bibliothek? Es scheint nicht, ein C ++ Wrapper überall verfügbar zu sein.

Andere Tipps

Ich habe den fictorial redis-cplusplus-Client gegabelt, machte es kompatibel zu redis-Server v2.0, hinzugefügt api Anrufe und umgesetzt konsistentes Hashing fehlt. Es gibt auch einen frühen Zustand hoher Ebene Klassen, die verwendbar wie stl Arten in naher Zukunft (shared_string, shared_int, shared_set, ...) sein wird. Nichts ist produktionsbereit noch nicht, aber die zur Verfügung gestellten Tests sind erfolgreich ausgeführt wird: -)

http://github.com/mrpi/redis-cplusplus-client

https://github.com/brianwatling/redispp

Ich habe meine gerade veröffentlicht c ++ redis Client auf GitHub. Es ist jetzt Hauptmerkmal ist Pipelining, werde ich mehr werden das Hinzufügen von Funktionen bald, möglicherweise Sharding / konsistente Hashing nächste.

Offizielle Liste von C ++ Kunden

Entdecken Sie eine Die vollständige Liste Redis C ++ Kunden auf redis.io . Sie werden dort verschiedene Clients auf Basis von Boost, Qt usw. Beachten Sie, dass zu diesem Zeitpunkt keine der C ++ Client-Implementierungen sind markiert wie finden „empfohlen.“ Aber es gibt eine empfohlene C-Client, hiredis , die in C ganz gut funktionieren sollte ++.

http://github.com/fictorial/redis-cplusplus-client

Diese C ++ Client-Bibliothek ist jedoch nicht gehalten, wie wenige Leute benutzen C ++ eigentlich mit Redis zu kommunizieren.

https://github.com/petrohi/hiredispp

Überprüfen Sie auch heraus hiredispp. Es ist noch lange nicht abgeschlossen, aber sehr einfache Implementierung dass umschlingt C basierend hiredis. Hiredis nimmt Protokoll auf niedriger Ebene und die Vernetzung Sachen während hiredispp Wrapper es nur C ++ machen freundlich.

Ich schrieb ein C ++ Redis-Client: redis-plus-plus . Es basiert auf hiredis , und in C ++ geschrieben 11. Es unterstützt die folgenden Funktionen:

  • Die meisten Befehle für Redis.
  • Verbindung Pool.
  • Redis Scripting.
  • Thread sicher, wenn nicht anders angegeben.
  • Redis Publish / Subscribe.
  • Redis Pipeline.
  • Redis Transaktion.
  • Redis Cluster.
  • Redis Sentinel.
  • Redis-Stream.
  • STL-ähnliche Oberfläche.
  • Befehl Allgemein Schnittstelle.

Es ist sehr schnell und einfach zu bedienen. Wenn Sie irgendein Problem mit diesen Kunden haben, fühlen Sie sich frei zu mich wissen lassen . Wenn Sie mögen es, auch frei fühlen zu Stern :)

#include <sw/redis++/redis++.h>
using namespace sw::redis;

try {
    Redis redis("tcp://127.0.0.1:6379");

    redis.set("key", "val");
    auto val = redis.get("key");
    if (val) {
        // dereference val to get the value of string type.
        std::cout << *val << std::endl;
    }   // else key doesn't exist.

    redis.rpush("list", {"a", "b", "c"});
    std::vector<std::string> list;
    redis.lrange("list", 0, -1, std::back_inserter(list));

    // put a vector<string> to Redis list.
    redis.rpush("another-list", list.begin(), list.end());

    auto tx = redis.transaction();

    auto tx_replies = tx.incr("num0")
                        .incr("num1")
                        .mget({"num0", "num1"})
                        .exec();

    auto redis_cluster = RedisCluster("tcp://127.0.0.1:7000");

    // RedisCluster has similar interface as Redis.
    redis_cluster.set("key", "value");
    val = redis_cluster.get("key");
} catch (const Error &err) {
    // error handling.
}

Überprüfen Sie die doc .

Ein weiteres C ++ Client finden Sie hier: https://github.com/luca3m/redis3m

Es ist ein Wrapper von hiredis, mit schönen C ++ Klassen, eine hohe Verfügbarkeit Connection Pooling und eine Reihe von Mustern bereits implementiert und einsatzbereit.

Wenn Sie über die Leistung kümmern, geben einen Versuch für bredis . Es nutzt C ++ 14 und boost::asio und hat keine andere Abhängigkeiten (d.h. keine hiredis noch libev etc.). Seine Verwendung möglicherweise nicht so bequem wie die anderen C ++ Bibliotheken, aber das war Trade-off von Design in den aus Gründen der Leistung und maximaler Flexibilität.

bredis viel einfacher auf Windows zu verwenden, da es keine hiredis Abhängigkeit hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top