Comment utiliser Redis dans un programme C ++?
Question
Quelle serait la meilleure façon d'utiliser un Redis DB dans un programme C ++?
La solution
En utilisant une bibliothèque C liaisons ? Il ne semble pas être un wrapper C ++ disponible partout.
Autres conseils
Je fourchue le fictorial Redis-Cplusplus-client, a rendu compatible v2.0 Redis-serveur, ajouté manquants appels api et mis en œuvre hashage cohérent. Il y a aussi un état précoce des classes de haut niveau qui seront utilisables comme types stl dans un proche avenir (shared_string, shared_int, shared_set, ...). Rien est encore prêt pour la production, mais les tests fournis sont en cours d'exécution avec succès: -)
https://github.com/brianwatling/redispp
Je viens de publier mon c ++ Redis client sur GitHub. Il est caractéristique principale est en ce moment pipelining, je vais ajouter plus de fonctionnalités bientôt, peut-être sharding / hash cohérente suivante.
Liste officielle des C ++ clients
Découvrez la liste complète Redis C ++ clients sur redis.io . Vous y trouverez différents clients en fonction de boost, Qt, etc. Notez qu'en ce moment aucun des implémentations client C ++ sont marqués comme « Recommandé. » Mais il y a un client C recommandé, hiredis , qui devrait fonctionner bien en C ++.
http://github.com/fictorial/redis-cplusplus-client
Cette bibliothèque client C ++ ne se maintient pas cependant que peu de gens utilisent effectivement C ++ pour communiquer avec Redis.
https://github.com/petrohi/hiredispp
Consultez également hiredispp. Il est loin d'être mise en œuvre complète, mais très simpliste qui entoure hiredis à base C. Hiredis prend en charge le protocole bas niveau et concernant le réseau tandis que les emballages de hiredispp simplement en font C ++ convivial.
J'ai écrit un client C ++ Redis: Redis-plus-plus . Il est basé sur hiredis , et écrit en C ++ 11. Il prend en charge les fonctions suivantes:
- La plupart des commandes pour Redis.
- pool de connexions.
- les scripts Redis.
- thread-safe, sauf indication contraire.
- Redis publication / abonnement.
- pipeline Redis.
- transaction Redis.
- Redis cluster.
- Redis Sentinel.
- Redis Stream.
- interface STL-like.
- Interface de commande générique.
Il est très rapide et facile à utiliser. Si vous avez un problème avec ce client, vous pouvez me faire savoir . Si vous le souhaitez, aussi se sentir à étoile il:)
#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.
}
Vérifiez la doc pour plus de détails.
peut être trouvé un autre client C ++ ici: https://github.com/luca3m/redis3m
Il est un wrapper de hiredis, avec des classes C ++ belles, une mise en commun de connexion haute disponibilité et un ensemble de modèles déjà mis en œuvre et prêts à l'emploi.
Si vous vous souciez de la performance, donner un essai bredis . Il utilise c ++ et 14 boost::asio
et n'a pas d'autres dépendances (à savoir pas hiredis
ni libev
etc.). Son utilisation peut-être pas aussi pratique que les autres bibliothèques C ++, mais qui était hors commerce par la conception dans un souci de performance et une flexibilité maximale.
bredis beaucoup plus facile à utiliser sous Windows, car il n'a pas de dépendance de hiredis
.