我正在构建一个连接到 redis 的 nodejs 应用程序。我有这个与我的本地redis实例一起工作。现在,我正在使用ioredis
从我的 nodejs 应用程序连接到 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 错误的最佳方法是什么?