【问题解决】关于 C++ 连接 Redis 集群报错 MOVED

2022-05-06 15:10:40 浏览数 (3)

过程的艰辛我就不说了。注意看:报错的应答消息是这样的:MOVED 7365 192.168.190.133:6382

此刻小脑袋瓜灵光的各位已经转过弯来了吧。

没转过弯也正常,你应该是缺少这一篇:关于 redisCommand 以及 redisReply

代码语言:javascript复制
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 方式取出。

建议加点判断:

代码语言:javascript复制
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;
}

1 人点赞