使用redis++库创建RedisCluster连接失败问题求助
问题排查与解决
你的报错信息里显示连接地址是:6379,说明RedisCluster尝试连接的IP是空值,核心问题出在初始化顺序错误:你先创建了ConnectionOptions和RedisCluster对象,之后才从Arguments里读取IP和端口,这时候RedisCluster已经用默认的空地址+6379端口去尝试连接,自然会报“名称或服务未知”的错误。
正确的执行流程应该是:
- 先从Arguments中读取Redis集群的IP和端口信息
- 根据读取到的信息配置
ConnectionOptions - 用配置好的
ConnectionOptions创建RedisCluster对象
简单代码示例:
// 1. 优先从Arguments获取IP和端口 std::string redis_ip = args.get("redis_ip"); int redis_port = args.get<int>("redis_port"); // 2. 配置连接参数 sw::redis::ConnectionOptions opts; opts.host = redis_ip; opts.port = redis_port; // 按需添加其他配置(如密码、超时时间等) // 3. 初始化RedisCluster sw::redis::RedisCluster cluster(opts);
另外注意,RedisCluster初始化需要指定集群中至少一个可用节点的地址,确保ConnectionOptions的host和port被正确赋值,而非默认空值。你直接传URL能成功,是因为URL一次性把IP和端口打包传递,规避了顺序错误的问题。
内容的提问来源于stack exchange,提问作者defApps
相关产品推荐
相关产品推荐

