OpenSuse下redis-plus-plus连接Redis单机及集群报错求助
问题背景
我在OpenSuse 15.0系统中安装Redis后,使用redis-cli测试与Redis服务端的通信状态正常。由于使用C++进行开发,我选择使用redis-plus-plus库,该库安装流程顺利且全部测试用例均通过。随后我在redis-plus-plus根目录下编写测试代码验证连接有效性。
初始单机连接测试
初始测试代码如下:
#include <sw/redis++/redis++.h> #include <iostream> #include <unordered_set> using namespace sw::redis; int main() { // Create an Redis object, which is movable but NOT copyable. auto redis = Redis("tcp://127.0.0.1:6379"); redis.set("key", "val"); }
使用如下命令编译:
/usr/bin/g++-10 -std=c++17 -o main main.cpp /home/user/redis-plus-plus/test/libredis++.a /home/user/hiredis/build/libhiredis_static.a -pthread
编译无报错,执行./main程序时出现如下错误:
terminate called after throwing an instance of 'sw::redis::Error' what(): unknown error code: Failed to connect to Redis: Abortado (`core' generado)
当时排查确认Redis服务端在另一终端正常运行,故障定位在redis.set("key", "val");这一行,移除该行代码后程序运行无异常。该单机连接问题后续已解决。
新增集群连接后报错
解决单机连接问题后,新增Redis集群连接代码遇到新报错,更新后的代码如下:
#include <sw/redis++/redis++.h> #include <iostream> using namespace sw::redis; int main() { auto redis = Redis("tcp://127.0.0.1:6379"); redis.set("key", "new_val270622"); auto redis_cluster = RedisCluster("tcp://127.0.0.1:16379"); redis_cluster.set("key", "new_val"); }
运行程序时报错:
CLUSTERDOWN The cluster is down
已完成的排查操作
- 执行
ss -tulpn命令查询端口监听状态,结果如下:
- 已在
redis.config中修改如下配置:
cluster-enabled yes cluster-config-file nodes-16379.conf cluster-require-full-coverage yes
- 已执行
redis-cli --cluster fix 127.0.0.1:6379命令尝试修复集群,但问题仍未解决。
内容的提问来源于stack exchange,提问作者Georgia
相关产品推荐
相关产品推荐

