zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

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

RedisC++集群连接 解决 报错 关于 问题
2023-09-14 09:09:10 时间

过程的艰辛我就不说了。注意看:报错的应答消息是这样的: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;
}