node redis 在服务端使用踩坑
测试环境正常,生产环境不能正常访问
1、测试环境和生产环境不同的是配置的 redis 不一样,难道是因为 redis吗?
类似issue:
https://github.com/luin/ioredis/issues?q=++Error%3A+read+ECONNRESET
https://github.com/luin/ioredis/issues/1203
2、debug mock 代码,打印请求 redis 返回值
- 测试环境可以请求到数据
- 生产环境仍然是报错的
- 升级 ioredis 4.28.5,增加 监听事件
看上去是在生产环境 redis 链接不上,可能得问问 redis 相关同学了。
3、后来经过和 redis 开发沟通
ioredis 这个库连接时会发一个info,twemproxy 不支持info命令,所以ioredis认为异常所以进行了重连: https://github.com/luin/ioredis/issues/573
增加一个参数
const Redis = require('ioredis')
const redis = new Redis({ "port": , "host": "", "password": "", "db": 0, maxRetriesPerRequest: 20, enableReadyCheck: false,// 增加参数 retryStrategy(times) { console.warn(`Retrying redis connection: attempt ${times}`); return Math.min(times * 500, 2000); }, });
你要觉得这篇文章比较好,记得点推荐!