排查 ioredis 报错Failed to refresh slots cache

数据库NoSQL数据库技术服务知识库
问题现象

用户在使用 Node.js ioredis 连接到 Redis 分片集群,报错如下:

ClusterAllFailedError: Failed to refresh slots cache.
 at tryNode (/root/node_modules/ioredis/built/cluster/index.js:308:31)
 at /root/node_modules/ioredis/built/cluster/index.js:325:21
问题复现

准备如下 Node.js 脚本,实现基本的连接,set key,get key 逻辑:

const Redis = require('ioredis');

// create client
const redis = new Redis.Cluster([
  { host: 'redis-xxxxxxx.redis.ivolces.com', port: 6379 }
], 
{
    slotsRefreshTimeout:300,
    slotsRefreshInterval:1,
    redisOptions: {
      password: "your password",
    },
  }
);
redis.on('connect', () => {
  console.log('successfully connect to redis cluster');
});
redis.on('error', (err) => {
  console.error('An error occurred while connecting to the cluster.:', err);
});
// set a key
redis.set("mykey", "value"); 
// get a key
redis.get("mykey", (err, result) => {
  if (err) {
    console.error(err);
  } else {
    console.log(result); // Prints "value"
  }
});
根因和解决方案

ioredis 可以兼容火山引擎 Redis,出现 ClusterAllFailedError: Failed to refresh slots cache 报错通常有如下两类场景:

  1. 密码错误:在连接时指定的密码错误,导致无法客户端无法连接到 Redis 分片集群
  2. 网络连通性:需要保证客户端与 Redis Cluster 的网络连通性:
  • 如果使用私网地址,那么客户端所在的 ECS 实例与目标 Redis 实例在同一 VPC 网络。
  • ECS 的 IP 地址或客户端 IP 地址是否已加入 Redis 实例的 IP 白名单中。设置白名单的方法,请参见设置白名单
参考文档
0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

所属团队号:
相关资源
大模型产品方案白皮书——PromptPilot
AI 正以空前速度重塑行业,大模型成为继移动互联网后的新科技浪潮。如何将其与业务深度融合,实现落地,仍是数字化转型的核心挑战。有效 Prompt 是驱动模型达成业务目标的关键,但业务诉求常模糊、缺乏标准答案,模型理解差异大。企业需让模型准确理解需求、稳定输出高质量结果,并在数据积累中持续优化性能与价值。 PromptPilot 应运而生,通过对话与任务用例自动生成高质量 Prompt 与评估标准,运行中持续识别并优化问题,释放大模型潜力,让非技术人员也能轻松驾驭大模型,推动落地与创新。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论