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

Posted 看,未来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了问题解决关于 C++ 连接 Redis 集群报错 MOVED相关的知识,希望对你有一定的参考价值。

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

以上是关于问题解决关于 C++ 连接 Redis 集群报错 MOVED的主要内容,如果未能解决你的问题,请参考以下文章

redis.conf中bind绑定IP不对,redis集群创建节点的时候,报错|redi群集密码设置

redis-trib.rb创建Redis集群时失败报错解决方案

redis 集群安装时的报错的解决办法

java连接redis超时问题怎么解决

jedis 连接 虚拟机内redis服务

redis集群报错:(error) CLUSTERDOWN The cluster is down