¿Cómo utilizar Redis dentro de un programa C++?
Pregunta
¿Cuál sería la mejor manera de utilizar una base de datos Redis dentro de un programa C++?
Solución
El uso de un href="http://code.google.com/p/credis/" rel="nofollow noreferrer"> C atascamientos biblioteca ? No parece ser un envoltorio de C ++ en cualquier lugar disponible.
Otros consejos
He bifurcada del fictorial Redis-cplusplus-cliente, lo hizo compatible con v2.0 Redis-servidor, añadido perder llamadas API y hash consistente en práctica. También hay un estado temprano de clases de alto nivel que se pueda utilizar como tipos de STL en un futuro próximo (shared_string, shared_int, shared_set, ...). Nada puede ser de producción todavía, pero las pruebas previstas están ejecutando con éxito: -)
https://github.com/brianwatling/redispp
Acabo de liberar mi c ++ Redis cliente en github. Su característica principal en este momento es la canalización, voy a añadir más características en breve, posiblemente sharding / hash consistente siguiente.
Lista oficial de clientes C++
Explora un Lista llena de Clientes Redis C++ en redis.io.Allí encontrará diferentes clientes basados en boost, Qt, etc.Tenga en cuenta que en este momento ninguna de las implementaciones del cliente C ++ está marcada como "recomendadas". Pero hay un cliente C recomendado, contratados, que debería funcionar bien en C++.
http://github.com/fictorial/redis-cplusplus-client
Esta librería cliente C ++ no se mantiene sin embargo tan pocas personas realmente utilizan C ++ para comunicarse con Redis.
https://github.com/petrohi/hiredispp
Consulte también contratadoispp.Está lejos de ser una implementación completa, pero es muy simplista y abarca los contratados basados en C.Hiredis se encarga del protocolo de bajo nivel y de las cuestiones de red, mientras que los envoltorios de Hiredispp simplemente lo hacen compatible con C++.
Me escribió un cliente de C ++ Redis: Redis-plus-plus . Se basa en hiredis , y escrito en C ++ 11. Es compatible con las siguientes características:
- La mayoría de los comandos para Redis.
- agrupación de conexiones.
- Redis secuencias de comandos.
- Tema seguros a menos que se indique lo contrario.
- Redis publicación / suscripción.
- tubería Redis.
- transacción Redis.
- Redis Cluster.
- Redis Sentinel.
- Redis corriente.
- STL-como interfaz.
- interfaz de comandos genérica.
Es muy rápido y fácil de usar. Si usted tiene cualquier problema con este cliente, no dude en hágamelo saber . Si gusta, también se sienten libres para estrella que :)
#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 para más detalles.
Otra ++ C del cliente se puede encontrar aquí: https://github.com/luca3m/redis3m
Es un envoltorio de hiredis, con un bonito clases de C ++, una agrupación de conexiones de alta disponibilidad y un conjunto de patrones ya implementados y listos para su uso.
Si se preocupan por el rendimiento, darle una oportunidad para bredis . Utiliza c ++ 14 y boost::asio
y no tiene otras dependencias (es decir, no hiredis
ni libev
etc.). Su uso podría no ser tan conveniente como las otras bibliotecas de C ++, pero que era compensación por diseño en aras de un rendimiento y una flexibilidad máxima.
bredis mucho más fácil de usar en Windows, ya que no tiene dependencia hiredis
.