我正在构建一个连接到Redis的Node.js应用程序。我已经使用本地Redis实例完成了这个工作。现在,我正在使用ioredis
从我的Node.js应用程序连接到AWS中的k8s Redis集群。以下是我的代码。
const Redis = require("ioredis");
this.redis = new Redis({
port: 6379, // Redis port
host: rhost, // Redis host
password: password
});
this.redis.on('connect', () => {
console.log('connected to redis')
})
看起来我已经成功连接到我的集群,因为日志中打印了消息connected to redis
。然而,每次我尝试使用我的redis对象时,都会出现MOVED错误:
UnhandledPromiseRejectionWarning: ReplyError: MOVED 5011 <ip address>:6379
at parseError (/node_modules/ioredis/node_modules/redis-parser/lib/parser.js:179:12)
at parseType (/node_modules/ioredis/node_modules/redis-parser/lib/parser.js:302:14)
这个连接在我的本地可以工作。但是在 AWS 上不行。我试过使用 Redis.Cluster
对象替换 Redis
,但是在部署应用程序后,应用程序会挂起并且连接事件永远不会触发。 close
和 reconnecting
事件似乎无限循环。
据我理解,这可能是集群节点之间重定向的问题。也许是主/从配置的问题。AWS 中的错误是否是配置问题?我需要使用 Redis.Cluster
对象而不是普通的 Redis
实例吗?修复 MOVED 错误的最佳方法是什么?