C++访问Redis的mset 二进制数据接口封装方案

2020-01-06 13:07:26丽君
易采站长站为您分析C++访问Redis的mset 二进制数据接口封装方案的相关资料,需要的朋友可以参考下    

需求

C++中使用hiredis客户端接口访问redis; 
需要使用mset一次设置多个二进制数据

以下给出三种封装实现方案;

简单拼接方案

在redis-cli中,mset的语法是这样的:

 

复制代码
/opt/colin$./redis-cli mset a 11 b 22 c 333

 

OK

按照这样的语法拼接后,直接使用hiredis字符串接口redisCommand传递:
 

  1. void msetNotBinary(redisContext *c, const vector<string> &vtKey, const vector<string> & vtVal )  { 
  2.   if(vtKey.size() != vtVal.size())    { 
  3.     throw runtime_error( "Redis error" );    } 
  4.     string strCmd = "MSET"; 
  5.   for(int i = 0; i < vtKey.size(); i++)    { 
  6.     strCmd += " "+vtKey[i]+" "+vtVal[i];    } 
  7.   cout << "strCmd:" << strCmd << endl;   
  8.   void * r = redisCommand(c, strCmd.c_str() );    if ( !r ) 
  9.     throw runtime_error( "Redis error" );    freeReplyObject( r ); 
  10. }   
  11. void do_test( redisContext *c )  {   
  12.   vector<string> vtKey;    vector<string> vtVal; 
  13.     vtKey.push_back("A"); 
  14.   vtVal.push_back("AAAA");    vtKey.push_back("B"); 
  15.   vtVal.push_back("BBBB");    vtKey.push_back("C");