How to use Redis within a C++ program?

前端 未结 9 1351
被撕碎了的回忆
被撕碎了的回忆 2020-12-15 06:48

What would be the best way to use a Redis DB within a C++ program?

9条回答
  •  时光说笑
    2020-12-15 07:13

    I wrote a C++ Redis client: redis-plus-plus. It's based on hiredis, and written in C++11. It supports the following features:

    • Most commands for Redis.
    • Connection pool.
    • Redis scripting.
    • Thread safe unless otherwise stated.
    • Redis publish/subscribe.
    • Redis pipeline.
    • Redis transaction.
    • Redis Cluster.
    • Redis Sentinel.
    • Redis Stream.
    • STL-like interface.
    • Generic command interface.

    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 
    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 list;
        redis.lrange("list", 0, -1, std::back_inserter(list));
    
        // put a vector 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.

提交回复
热议问题