What would be the best way to use a Redis DB within a C++ program?
What would be the best way to use a Redis DB within a C++ program?
https://github.com/brianwatling/redispp
I've just released my c++ redis client on github. It's main feature right now is pipelining, I'll be adding more features soon, possibly sharding/consistent hashing next.
I wrote a C++ Redis client: redis-plus-plus. It's based on hiredis, and written in C++11. It supports the following features:
It's very fast, and easy to use. If you have any problem with this client, feel free to let me know. If you like it, also feel free to star it :)
#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.
}
Check the doc for details.
http://github.com/fictorial/redis-cplusplus-client
This C++ client library is not maintained however as few people actually use C++ to communicate with Redis.
https://github.com/petrohi/hiredispp
Also check out hiredispp. It is far from complete, but very simplistic implementation that wraps around C based hiredis. Hiredis takes care of low level protocol and networking stuff while hiredispp wrappers just make it C++ friendly.
If you care about performance, give a try for bredis. It uses c++ 14 and boost::asio and has not other dependencies (i.e. no hiredis nor libev etc.). Its usage might be not as convenient as the other C++ libraries, but that was trade off by design in the sake of performance and maximum flexibility.
bredis much more easy to use on Windows, as it has no hiredis dependency.