You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ioredis连接AWS MemoryDB集群遇ClusterAllFailedError问题

解决ioredis连接AWS MemoryDB集群的ClusterAllFailedError问题

你遇到的ClusterAllFailedError: Failed to refresh slots cache超时问题,核心原因是AWS MemoryDB的集群连接规则与普通Redis集群存在差异,结合你的代码,按以下步骤修复:

关键修复点

  • 强制启用TLS连接:AWS MemoryDB要求所有集群连接必须使用TLS加密,ioredis默认不开启该选项,需显式配置。
  • 调整超时参数:默认超时时间过短,易因网络延迟导致slot缓存刷新失败,需延长连接和缓存刷新的超时阈值。
  • 验证网络权限:确认运行代码的环境(EC2/本地机器等)的安全组/防火墙允许访问MemoryDB集群的6379端口,同时MemoryDB的安全组已放行对应来源IP。

修改后的完整代码

const Redis = require('ioredis');

const connection = new Redis.Cluster(
  [{ host: "clustercfg.jb-bot-dev-memorydb.czxa87.memorydb.ap-south-1.amazonaws.com", port: 6379}],
  {
    redisOptions: {
      password: "memorydb@12345678",
      // 启用TLS,MemoryDB强制要求
      tls: {},
      // 延长连接超时时间至10秒
      connectTimeout: 10000
    },
    // 延长slot缓存刷新超时时间至10秒
    refreshSlotsCacheTimeout: 10000
  }
);

connection.on("ready", () => {
  console.log("Redis Client Ready");
});
connection.on("connect", () => {
  console.log("Redis Client Connected");
});
connection.on("error", (error) => {
  console.log("Redis Client Connection Error", error);
});

额外说明

  • 若在本地环境连接,需确保机器能通过VPN或AWS Direct Connect访问MemoryDB集群(MemoryDB默认仅允许VPC内访问,无法直接从公网连接)。
  • AWS云环境内的节点会自动信任MemoryDB的证书,无需额外配置证书路径;若本地环境出现证书错误,可在tls配置中添加AWS官方CA证书路径。

内容的提问来源于stack exchange,提问作者Tushar Parmar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 18:46:01