18

在 C++ 程序中使用 Redis DB 的最佳方式是什么?

4

9 回答 9

15

我已经分叉了虚构的 redis-cplusplus-client,使其与 redis-server v2.0 兼容,添加了缺少的 api 调用并实现了一致的哈希。还有一些高级类的早期状态将在不久的将来像 stl 类型一样可用(shared_string、shared_int、shared_set,...)。尚未准备好生产,但提供的测试已成功运行:-)

http://github.com/mrpi/redis-cplusplus-client

于 2010-09-14T12:31:23.703 回答
7

C++ 客户端官方列表

在 redis.io 上探索 Redis C++ 客户端的完整列表。您会发现有基于 boost、Qt 等的不同客户端。请注意,目前没有任何 C++ 客户端实现被标记为“推荐”。但是有一个推荐的 C 客户端,hiredis,它应该可以在 C++ 中正常工作。

于 2014-07-08T11:30:28.490 回答
5

https://github.com/brianwatling/redispp

我刚刚在 github 上发布了我的 c++ redis 客户端。它现在的主要功能是流水线,我将很快添加更多功能,接下来可能是分片/一致哈希。

于 2011-01-04T22:55:41.690 回答
5

我写了一个 C++ Redis 客户端:redis-plus-plus。它基于hiredis,用C++11 编写。它支持以下功能:

  • Redis 的大多数命令。
  • 连接池。
  • Redis 脚本。
  • 除非另有说明,否则线程安全。
  • Redis 发布/订阅。
  • Redis 管道。
  • Redis 事务。
  • Redis 集群。
  • Redis 哨兵。
  • Redis 流。
  • 类似 STL 的界面。
  • 通用命令界面。

它非常快,而且易于使用。如果您对此客户有任何问题,请随时告诉我。如果你喜欢它,也可以随意给它加星:)

#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.
}

检查文档以获取详细信息。

于 2018-10-16T10:11:38.953 回答
4

使用C 绑定库?似乎在任何地方都没有可用的 C++ 包装器。

于 2010-02-02T02:21:47.883 回答
4

http://github.com/fictorial/redis-cplusplus-client

然而,由于很少有人真正使用 C++ 与 Redis 通信,因此没有维护这个 C++ 客户端库。

于 2010-02-08T20:24:34.283 回答
2

https://github.com/petrohi/hiredispp

另请查看hiredispp。它远未完成,但非常简单的实现围绕基于 C 的hiredis。Hiredis 负责处理低级协议和网络内容,而hiredispp 包装器只是使其对 C++ 友好。

于 2010-12-25T06:38:45.520 回答
1

另一个 C++ 客户端可以在这里找到:https ://github.com/luca3m/redis3m

它是hiredis 的包装器,带有漂亮的C++ 类、高可用性连接池和一组已经实现并可以使用的模式。

于 2014-05-06T17:41:31.260 回答
0

如果您关心性能,请尝试使用bredis。它使用 c++ 14 并且boost::asio没有其他依赖项(即 no hiredisnorlibev等)。它的使用可能不如其他 C++ 库那么方便,但为了性能和最大的灵活性,这是通过设计进行权衡的。

bredis在 Windows 上更容易使用,因为它没有hiredis依赖关系。

于 2019-04-14T17:06:40.703 回答