在C ++程序中使用Redis DB的最佳方法是什么?
使用C bindings库?似乎没有可用的C ++包装器。
我已经将redis-cplusplus客户端分叉,使其与redis-server v2.0兼容,添加了丢失的api调用并实现了一致的散列。还有一个早期的高级类状态,在不久的将来可以像stl类型一样使用(shared_string,shared_int,shared_set,...)。什么都没有生产就绪,但提供的测试成功运行:-)
http://github.com/fictorial/redis-cplusplus-client
但是没有维护这个C ++客户端库,因为实际上很少有人使用C ++与Redis进行通信。
https://github.com/brianwatling/redispp
我刚刚在github上发布了我的c ++ redis客户端。它的主要功能是流水线操作,我将很快添加更多功能,接下来可能会进行分片/一致哈希。
官方列表的C ++客户端
浏览Redis C++ clients on redis.io的完整列表。你会发现有不同的客户端基于boost,Qt等。请注意,目前没有一个C ++客户端实现被标记为“推荐”。但是有一个推荐的C客户端hiredis,它应该在C ++中运行得很好。
https://github.com/petrohi/hiredispp
还可以查看hiredispp。它远非完整,但包含基于C的hiredis的非常简单的实现。 Hiredis负责低级协议和网络工作,而hiredispp包装器只是使C ++友好。
另一个C ++客户端可以在这里找到:https://github.com/luca3m/redis3m
它是hiredis的包装器,具有漂亮的C ++类,高可用性连接池和一组已经实现并可以使用的模式。
我写了一个C ++ Redis客户端:redis-plus-plus。它基于hiredis,用C ++ 11编写。它支持以下功能:
它非常快速且易于使用。如果您对此客户有任何问题,请随时访问let me know。如果你喜欢它,也可以随意加星:)
#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了解详情。