过程的艰辛我就不说了。注意看:报错的应答消息是这样的:MOVED 7365 192.168.190.133:6382
此刻小脑袋瓜灵光的各位已经转过弯来了吧。
没转过弯也正常,你应该是缺少这一篇:关于 redisCommand 以及 redisReply
redisReply *reply = (redisReply *)redisCommand(c,command.c_str());
if(reply->type == REDIS_REPLY_ERROR){
string res = reply->str;
freeReplyObject(reply);
return res;
}
把被转接的 IP:port 返出来,通过 substr 方式取出。
建议加点判断:
int main(){
Redis redis;
redis.connect(6381);
string s = redis.get_Command_s("set c 1");
if(s.substr(0,5) == "MOVED"){
int port = stoi(s.substr(s.size()-4,4));
redis.connect(port);
string s = redis.get_Command_s("set c 1");
cout<<s<<endl;
}
else{
cout<<"OK"<<endl;
}
return 0;
}