#include<iostream>#include<string>#include<sw/redis++/redis++.h>usingnamespace std;intmain(){// 构建Redis对象的时候,在构造函数中,指定Redis服务器的地址和端口sw::redis::Redis redis("tcp://127.0.0.1:6379");string ret =redis.ping();cout << ret << endl;return0;}
voidTestExists(sw::redis::Redis &redis){redis.flushall();redis.set("key1","111");redis.set("key3","111");auto ret =redis.exists("key1");cout << ret << endl;ret =redis.exists("key2");cout << ret << endl;// exists()的重载形式,可以用一个初始化列表传参ret =redis.exists({"key1","key2","key3"});cout << ret << endl;}
voidTestExpireAndTTL(sw::redis::Redis &redis){redis.flushall();redis.set("key","111");// 10s -> std::chrono::seconds(10);redis.expire("key",10s);// 此处10s为字面值,类似于2.33fstd::this_thread::sleep_for(3s);auto time =redis.ttl("key");cout << time << endl;}
6.Type
voidTestType(sw::redis::Redis&redis){redis.flushall();redis.set("key1","111");string result =redis.type("key");cout <<"key1: "<< result << endl;redis.lpush("key2","111");result =redis.type("key2");cout <<"key2: "<< result << endl;redis.hset("key3","aaa","111");result =redis.type("key3");cout <<"key3: "<< result << endl;redis.sadd("key4","aaa");result =redis.type("key4");cout <<"key4: "<< result << endl;redis.zadd("key5","吕布",99);result =redis.type("key5");cout <<"key5: "<< result << endl;}
4.示例:String
1.Set with expire
voidTestSetWithExpire(Redis&redis){redis.flushall();redis.set("key","111",10s);std::this_thread::sleep_for(3s);longlong time =redis.ttl("key");std::cout <<"time: "<< time << std::endl;}
2.Set NX / XX
voidTestSetNXAndXX(Redis &redis){redis.flushall();redis.set("key","111");// set 的重载版本中, 没有单独提供 NX 和 XX 的版本, 必须搭配过期时间的版本来使用// 过期时间填0s则为永不过期redis.set("key","222",0s, sw::redis::UpdateType::EXIST);auto value =redis.get("key");if(value){std::cout <<"value: "<< value.value()<< std::endl;}}
voidTestRange(Redis &redis){redis.flushall();redis.set("key","DieKSnowK");string result =redis.getrange("key",2,5);cout <<"result: "<< result << endl;redis.setrange("key",2,"xyz");auto value =redis.get("key");cout <<"value: "<< value.value()<< endl;}
voidTestLlen(Redis &redis){redis.flushall();redis.lpush("key",{"111","222","333","444"});longlong len =redis.llen("key");cout <<"len: "<< len << endl;}
6.示例:set
1.Sadd && Smembers
此处要注意保存结果的方式和之前的区别
voidTestSaddAndSmembers(Redis&redis){redis.flushall();// 一次添加一个元素redis.sadd("key","111");// 一次添加多个元素(使用初始化列表)redis.sadd("key",{"222","333","444"});// 一次添加多个元素(使用迭代器)set<string> elems ={"555","666","777"};redis.sadd("key", elems.begin(), elems.end());// 获取到上述元素// vector<string> result;// auto it = std::back_inserter(result);// 此处用来保存 smembers 的结果, 使用 set 可能更合适.set<string> result;// 由于此处 set 里的元素顺序是固定的. 指定一个 result.end() 或者 result.begin() 或者其他位置的迭代器, 都无所谓auto it = std::inserter(result, result.end());redis.smembers("key", it);PrintContainer(result);}
2.Sismerber
voidTestSismember(Redis&redis){redis.flushall();redis.sadd("key",{"111","222","333","444"});bool result =redis.sismember("key","555");cout <<"result: "<< result << endl;}
3.Scard
voidTestScard(Redis &redis){redis.flushall();redis.sadd("key",{"111","222","333"});longlong result =redis.scard("key");cout <<"result: "<< result << endl;}
4.Spop
voidTestSpop(Redis&redis){redis.flushall();redis.sadd("key",{"111","222","333","444"});auto result =redis.spop("key");if(result){std::cout <<"result: "<< result.value()<< std::endl;}else{std::cout <<"result 无效!"<< std::endl;}}
5.Sinter
voidTestSinter(Redis &redis){redis.flushall();redis.sadd("key1",{"111","222","333"});redis.sadd("key2",{"111","222","444"});set<string> result;auto it = std::inserter(result, result.end());redis.sinter({"key1","key2"}, it);PrintContainer(result);}
6.Sinterstore
voidTestSinterstore(Redis &redis){redis.flushall();redis.sadd("key1",{"111","222","333"});redis.sadd("key2",{"111","222","444"});longlong len =redis.sinterstore("key3",{"key1","key2"});cout <<"len: "<< len << endl;set<string> result;auto it = std::inserter(result, result.end());redis.smembers("key3", it);PrintContainer(result);}
voidTestHexists(Redis &redis){redis.flushall();redis.hset("key","f1","111");redis.hset("key","f2","222");redis.hset("key","f3","333");bool result =redis.hexists("key","f4");std::cout <<"result: "<< result << std::endl;}
3.Hdel
voidTestHdel(Redis &redis){redis.flushall();redis.hset("key","f1","111");redis.hset("key","f2","222");redis.hset("key","f3","333");longlong result =redis.hdel("key","f1");std::cout <<"result: "<< result << std::endl;result =redis.hdel("key",{"f2","f3"});std::cout <<"result: "<< result << std::endl;longlong len =redis.hlen("key");std::cout <<"len: "<< len << std::endl;}
voidTestZaddAndZrange(Redis &redis){redis.flushall();redis.zadd("key","吕布",99);redis.zadd("key",{std::make_pair("赵云",98),std::make_pair("典韦",97)});vector<std::pair<string,double>> members ={std::make_pair("关羽",95),std::make_pair("张飞",93)};redis.zadd("key", members.begin(), members.end());vector<string> memberResults;auto it = std::back_inserter(memberResults);redis.zrange("key",0,-1, it);PrintContainer(memberResults);vector<std::pair<string,double>> membersWithScore;auto it2 = std::back_inserter(membersWithScore);redis.zrange("key",0,-1, it2);PrintContainerPair(membersWithScore);}
2.Zcard
voidTestZcard(Redis &redis){redis.flushall();redis.zadd("key","zhangsan",90);redis.zadd("key","lisi",91);redis.zadd("key","wangwu",92);redis.zadd("key","zhaoliu",93);longlong result =redis.zcard("key");std::cout <<"result: "<< result << std::endl;}
3.Zrem
voidTestZrem(Redis &redis){redis.flushall();redis.zadd("key","zhangsan",90);redis.zadd("key","lisi",91);redis.zadd("key","wangwu",92);redis.zadd("key","zhaoliu",93);redis.zrem("key","zhangsan");longlong result =redis.zcard("key");std::cout <<"result: "<< result << std::endl;}
testRigor测试用例模板记录
Application Description Template
Application Name Name: MySampleAppApplication Type Type: Web Application / Mobile Application / Desktop ApplicationFunctionality Overview Description: MySampleApp is an online shopping platform t…