易采站长站为您分析C++访问Redis的mset 二进制数据接口封装方案的相关资料,需要的朋友可以参考下
/opt/colin$./redis-cli mset a 11 b 22 c 333
需求
C++中使用hiredis客户端接口访问redis;
需要使用mset一次设置多个二进制数据
以下给出三种封装实现方案;
简单拼接方案
在redis-cli中,mset的语法是这样的:
复制代码
/opt/colin$./redis-cli mset a 11 b 22 c 333
OK
按照这样的语法拼接后,直接使用hiredis字符串接口redisCommand传递:
- void msetNotBinary(redisContext *c, const vector<string> &vtKey, const vector<string> & vtVal ) {
- if(vtKey.size() != vtVal.size()) {
- throw runtime_error( "Redis error" ); }
- string strCmd = "MSET";
- for(int i = 0; i < vtKey.size(); i++) {
- strCmd += " "+vtKey[i]+" "+vtVal[i]; }
- cout << "strCmd:" << strCmd << endl;
- void * r = redisCommand(c, strCmd.c_str() ); if ( !r )
- throw runtime_error( "Redis error" ); freeReplyObject( r );
- }
- void do_test( redisContext *c ) {
- vector<string> vtKey; vector<string> vtVal;
- vtKey.push_back("A");
- vtVal.push_back("AAAA"); vtKey.push_back("B");
- vtVal.push_back("BBBB"); vtKey.push_back("C");










