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