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')
1 2 3 4 5 6 7 8 9 10 11 12 | <br> 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); }, }); |
你要觉得这篇文章比较好,记得点推荐!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通