Redis C++客户端——命令使用

发布于:2025-07-29 ⋅ 阅读:(19) ⋅ 点赞:(0)

目录

代码案例:

示例:

代码案例: 

示例:

代码案例: 

示例:


        基于redis++库对redis服务的使用样例编写。

代码案例:

#include <sw/redis++/redis++.h>
#include <iostream>
#include <vector>
#include <thread>
#include "utils.hpp"
#include <set>

void test1(sw::redis::Redis& redis)
{
    std::cout << "sadd 和 smembers" << std::endl;
    redis.flushall();
    redis.sadd("key", "111");
    redis.sadd("key", {"333", "666", "222"});
    std::set<std::string> set1({"555", "444"});
    redis.sadd("key", set1.begin(), set1.end());

    std::set<std::string> set2;
    auto it = std::inserter(set2, set2.end());
    redis.smembers("key", it);
    print(set2);
}

void test2(sw::redis::Redis& redis)
{
    std::cout << "sismember:" << std::endl;
    redis.flushall();
    redis.sadd("key", {"111", "222", "333"});
    std::cout << redis.sismember("key", "111") << std::endl;
    std::cout << redis.sismember("key", "666") << std::endl;
    std::cout << redis.scard("key") << std::endl;
    std::cout << redis.spop("key").value() << std::endl;
}

void test3(sw::redis::Redis& redis)
{
    std::cout << "sinter 和 sinterstore:" << std::endl;
    redis.flushall();
    redis.sadd("key1", {"111", "222", "333"});
    redis.sadd("key2", {"111", "222", "444"});

    std::set<std::string> result;
    auto it = std::inserter(result, result.end());
    redis.sinter({"key1", "key2"}, it);
    print(result);
}

void test4(sw::redis::Redis& redis)
{
    std::cout << "sinterstore:" << std::endl;
    redis.flushall();
    redis.sadd("key1", {"111", "222", "333"});
    redis.sadd("key2", {"111", "222", "444"});

    long long num = redis.sinterstore("key3", {"key1", "key2"});
    std::cout <<  "交集个数" << num << std::endl;

    std::set<std::string> result;
    auto it = std::inserter(result, result.end());
    redis.smembers("key3", it);
    print(result);
}

int main()
{
    sw::redis::Redis redis("tcp://127.0.0.1:6379");
    // test1(redis);
    test2(redis);
    test3(redis);
    test4(redis);

    return 0;
}

示例:

代码案例: 

#include <sw/redis++/redis++.h>
#include <iostream>
#include <vector>
#include <thread>
#include "utils.hpp"

void test1(sw::redis::Redis& redis)
{
    std::cout << "hset 和 hget" << std::endl;
    redis.flushall();
    redis.hset("key", "f1", "111");
    redis.hset("key", std::make_pair("f2", "222"));
    redis.hset("key", {std::make_pair("f3", "333"), std::make_pair("f4", "444")});

    // std::vector<std::pair<std::string, std::string>> fields = 
    //     {std::make_pair("f5", "555"), std::make_pair("f6", "666")};
    std::vector<std::pair<std::string, std::string>> fields = 
        {{"f5", "555"}, {"f6", "666"}};
    redis.hset("key", fields.begin(), fields.end());

    auto result = redis.hget("key", "f5");
    if(result) std::cout << "result:" << result.value() << std::endl;
    else std::cout << "result 无效!" << std::endl;
}

void test2(sw::redis::Redis& redis)
{
    std::cout << "hexists:" << std::endl;
    redis.flushall();
    redis.hset("key", "f1", "111");
    redis.hset("key", "f2", "222");
    redis.hset("key", "f3", "333");

    std::cout << redis.hexists("key", "f2") << std::endl;
    std::cout << redis.hexists("key", "f4") << std::endl;
}

void test3(sw::redis::Redis& redis)
{
    std::cout << "hdel:" << std::endl;
    redis.flushall();
    redis.hset("key", "f1", "111");
    redis.hset("key", "f2", "222");
    redis.hset("key", "f3", "333");

    std::cout << redis.hdel("key", "f1") << std::endl;
    std::cout << redis.hlen("key") << std::endl;
    std::cout << redis.hdel("key", {"f2", "f3"}) << std::endl;
    std::cout << redis.hlen("key") << std::endl;
}

void test4(sw::redis::Redis& redis)
{
    std::cout << "hkeys and hvals:" << std::endl;
    redis.flushall();
    redis.hset("key", "f1", "111");
    redis.hset("key", "f2", "222");
    redis.hset("key", "f3", "333");

    std::vector<std::string> keys;
    auto it1 = std::back_inserter(keys);
    redis.hkeys("key", it1);
    print(keys);

    std::vector<std::string> vals;
    auto it2 = std::back_inserter(vals);
    redis.hvals("key", it2);
    print(vals);
}

void test5(sw::redis::Redis& redis)
{
    std::cout << "hmset and hmget:" << std::endl;
    redis.flushall();
    
    redis.hmset("key", {
        std::make_pair("f1", "111"),
        std::make_pair("f2", "222"),
        std::make_pair("f3", "333")
    });

    std::vector<std::pair<std::string, std::string>> pairs = {
        std::make_pair("f4", "444"),
        std::make_pair("f5", "555"),
        std::make_pair("f6", "666")
    };
    redis.hmset("key", pairs.begin(), pairs.end());

    std::vector<std::string> values;
    auto it = std::back_inserter(values);
    redis.hmget("key", {"f1", "f2", "f3"}, it);
    print(values);
}

int main()
{
    sw::redis::Redis redis("tcp://127.0.0.1:6379");
    test1(redis);
    test2(redis);
    test3(redis);
    test4(redis);
    test5(redis);

    return 0;
}

示例:

代码案例: 

#include <sw/redis++/redis++.h>
#include <iostream>
#include <vector>
#include <thread>
#include "utils.hpp"

void test1(sw::redis::Redis& redis)
{
    std::cout << "zadd and zrange:" << std::endl;
    redis.flushall();
    redis.zadd("key", "吕布", 99);
    redis.zadd("key", {std::make_pair("张飞", 85), std::make_pair("关羽", 95)});
    std::vector<std::pair<std::string, double>> container = {
        {"典韦", 88}, {"神赵云", 100}
    };
    redis.zadd("key", container.begin(), container.end());

    std::vector<std::string> people;
    auto it1 = std::back_inserter(people);
    redis.zrange("key", 0, -1, it1);
    print(people);

    std::vector<std::pair<std::string, double>> peopleAndScore;
    auto it2 = std::back_inserter(peopleAndScore);
    redis.zrange("key", 0, -1, it2);
    print(peopleAndScore);
}

void test2(sw::redis::Redis& redis)
{
    std::cout << "zcard:" << std::endl;
    redis.flushall();
    redis.zadd("key", "吕布", 99);
    redis.zadd("key", "典韦", 98);
    redis.zadd("key", "赵云", 97);
    redis.zadd("key", "关羽", 96);
    redis.zadd("key", "张飞", 95);

    std::cout << redis.zcard("key")  << std::endl;
}

void test3(sw::redis::Redis& redis)
{
    std::cout << "zrem:" << std::endl;
    redis.flushall();
    redis.zadd("key", "吕布", 99);
    redis.zadd("key", "典韦", 98);
    redis.zadd("key", "赵云", 97);
    redis.zadd("key", "关羽", 96);
    redis.zadd("key", "张飞", 95);

    std::cout << redis.zrem("key", "赵云") << std::endl;
    std::cout << redis.zcard("key")  << std::endl;
}

void test4(sw::redis::Redis& redis)
{
    std::cout << "zscore and zrank:" << std::endl;
    redis.flushall();
    redis.zadd("key", "吕布", 99);
    redis.zadd("key", "典韦", 98);
    redis.zadd("key", "赵云", 97);
    redis.zadd("key", "关羽", 96);
    redis.zadd("key", "张飞", 95);

    std::cout << redis.zscore("key", "关羽").value() << std::endl;
    std::cout << redis.zrank("key", "典韦").value() << std::endl;
}

int main()
{
    sw::redis::Redis redis("tcp://127.0.0.1:6379");
    test1(redis);
    test2(redis);
    test3(redis);
    test4(redis);

    return 0;
}

示例:


网站公告

今日签到

点亮在社区的每一天
去签到