Domanda

Quale sarebbe il modo migliore per utilizzare un Redis DB all'interno di un programma C ++?

È stato utile?

Soluzione

C binding biblioteca? Non sembra essere un C ++ involucro disponibili ovunque.

Altri suggerimenti

ho biforcuta il fictorial Redis-cplusplus-client, ha reso compatibile con v2.0 Redis server, ha aggiunto manca chiamate API e hashing coerente implementata. C'è anche uno stato iniziale di classi di alto livello che saranno utilizzabili come tipi STL in un prossimo futuro (shared_string, shared_int, shared_set, ...). Nulla è ancora pronta, ma la produzione delle prove di cui sono in esecuzione con successo: -)

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

https://github.com/brianwatling/redispp

Ho appena pubblicato il mio c ++ Redis client su GitHub. E 'caratteristica principale in questo momento sta pipelining, sarò aggiunta di ulteriori funzionalità presto, possibilmente sharding / hashing coerente successivo.

Elenco ufficiale dei clienti C ++

Esplora un elenco completo di Redis C ++ clienti su redis.io . Vi troverete diversi clienti sulla base di boost, Qt, ecc Si noti che in questo momento nessuno dei C ++ implementazioni client sono contrassegnati come "Recommended". Ma v'è un client consigliato C, hiredis , che dovrebbe funzionare bene in C ++.

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

Questa libreria client C ++ non è mantenuta tuttavia come poche persone effettivamente utilizzano C ++ per comunicare con Redis.

https://github.com/petrohi/hiredispp

Anche check out hiredispp. E 'lontano dall'essere completo, ma molto semplicistico implementazione che avvolge hiredis basate C. Hiredis si prende cura di protocollo di basso livello e la roba in rete, mentre gli involucri hiredispp solo rendono C ++ friendly.

ho scritto un client C ++ Redis: Redis-plus-plus . Si basa su hiredis , e scritto in C ++ 11. Esso supporta le seguenti funzioni:

  • La maggior parte dei comandi per Redis.
  • pool di connessione.
  • Redis scripting.
  • thread-safe se non diversamente specificato.
  • Redis pubblicazione / sottoscrizione.
  • Redis gasdotto.
  • Redis transazione.
  • Redis Cluster.
  • Redis Sentinel.
  • Redis Stream.
  • STL-come l'interfaccia.
  • interfaccia di comando generico.

E 'molto veloce e facile da utilizzare. Se avete qualche problema con questo client, sentitevi liberi di fatemelo sapere . Se ti piace, si sentono liberi di protagonista è :)

#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.
}

doc per i dettagli.

Un altro cliente C ++ può essere trovato qui: https://github.com/luca3m/redis3m

E 'un involucro di hiredis, con una bella classi C ++, un pool di connessioni ad alta disponibilità e una serie di modelli già attuate e pronto per l'uso.

Se avete a cuore le prestazioni, dare una prova per bredis . Esso utilizza c ++ 14 e boost::asio e non ha altre dipendenze (cioè senza hiredislibev ecc). Il suo utilizzo potrebbe essere non così conveniente come le altre librerie C ++, ma che è stato compromesso dal design nel bene di prestazioni e massima flessibilità.

bredis molto più facile da usare su Windows, in quanto ha alcuna dipendenza hiredis.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top