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

Node.js/GraphQL应用集成Redis缓存时Redis服务器连接报错

解决Apollo Engine连接Redis缓存的本地OSX环境报错问题

嘿,我看你在本地OSX环境搭建Node.js/GraphQL应用,用Apollo Engine集成Redis做缓存时碰到了连接报错的问题。结合你给出的配置代码,咱们一步步排查并解决这些可能的坑:

1. 先修正Redis连接URL的格式问题

你当前配置里的http://127.0.0.1:6379/acme-store存在两个明显错误:

  • Redis默认使用TCP协议而非HTTP,正确的协议前缀是redis://
  • Redis的数据库指定用数字索引(默认0-15),不是路径格式的/acme-store

举个正确的URL示例:如果用默认的db 0,就是redis://127.0.0.1:6379;如果要指定db 1,就是redis://127.0.0.1:6379/1。

2. 确认Redis服务在本地正常运行

在OSX终端里执行以下命令验证:

  • 启动Redis服务(如果没启动的话):brew services start redis(用Homebrew安装的情况)
  • 测试连接:redis-cli ping,如果返回PONG说明服务正常运行。

3. 修正Apollo Engine的完整配置代码

把URL格式改对,同时补全queryCache里的store名称,修正后的代码如下:

const engine = new ApolloEngine({
  apiKey: '<apollo-engine-api-key>',
  origins: [{
    supportsBatch: true,
    requestTimeout: '60s',
  }],
  stores: [
    {
      name: 'acme-store',
      memcache: {
        url: ['redis://127.0.0.1:6379'], // 修正为Redis协议格式
        keyPrefix: 'acme'
      }
    }
  ],
  queryCache: {
    publicFullQueryStore: 'acme-store' // 完整指定咱们定义的store名称
  }
});

4. 检查依赖是否齐全

确保你已经安装了Apollo Engine和Redis客户端依赖,在项目根目录执行:

npm install apollo-engine ioredis

5. 排查OSX防火墙拦截问题

有时候本地防火墙会拦截Redis的6379端口,你可以暂时关闭防火墙测试,或者在「系统偏好设置」→「安全与隐私」→「防火墙」里允许Redis的网络连接权限。

如果还是报错,记得看Node.js控制台的详细错误日志,比如connection refused(服务没启动)、invalid URL(格式错误)这类信息,能帮你更快锁定问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:28:04