如何在C ++程序中使用Redis?

问题描述 投票:15回答:9

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

c++ database redis
9个回答
3
投票

使用C bindings库?似乎没有可用的C ++包装器。


13
投票

我已经将redis-cplusplus客户端分叉,使其与redis-server v2.0兼容,添加了丢失的api调用并实现了一致的散列。还有一个早期的高级类状态,在不久的将来可以像stl类型一样使用(shared_string,shared_int,shared_set,...)。什么都没有生产就绪,但提供的测试成功运行:-)

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


4
投票

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

但是没有维护这个C ++客户端库,因为实际上很少有人使用C ++与Redis进行通信。


4
投票

https://github.com/brianwatling/redispp

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


4
投票

官方列表的C ++客户端

浏览Redis C++ clients on redis.io的完整列表。你会发现有不同的客户端基于boost,Qt等。请注意,目前没有一个C ++客户端实现被标记为“推荐”。但是有一个推荐的C客户端hiredis,它应该在C ++中运行得很好。


1
投票

https://github.com/petrohi/hiredispp

还可以查看hiredispp。它远非完整,但包含基于C的hiredis的非常简单的实现。 Hiredis负责低级协议和网络工作,而hiredispp包装器只是使C ++友好。


1
投票

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

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


1
投票

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

  • Redis的大多数命令。
  • 连接池。
  • 你脚本。
  • 除非另有说明,否则为线程
  • Redis发布/订阅。
  • Redis管道。
  • Redis交易。
  • Redis集群。
  • Redis Sentinel。
  • 类似STL的界面。

它非常快速且易于使用。如果您对此客户有任何问题,请随时访问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了解详情。


0
投票

如果您关心性能,请试试bredis。它使用c ++ 14和boost::asio并且没有其他依赖关系(即没有hiredislibev等)。它的使用可能不如其他C ++库那么方便,但是为了性能和最大的灵活性,这在设计上是折衷的。

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

© www.soinside.com 2019 - 2024. All rights reserved.