【发布时间】:2019-02-01 08:33:18
【问题描述】:
我有一个同时运行 Node.js 和 Redis 的服务器。我正在使用 node-redis 包将我的 Node 应用程序连接到 Redis。 Node 应用程序和 Redis 都在单个服务器(同一台服务器)上运行。 GitHub 上的node-redis documentation 指出,在使用单服务器配置时,可以通过使用 Unix 套接字来增加 Redis 连接吞吐量。设置 Redis/node-redis 以使用 Unix 套接字的正确方法是什么?
我尝试在 redis.conf 文件中取消注释行 unixsocket /var/run/redis/redis.sock 和 unixsocketperm 700,然后通过指定以下内容在 Node 应用程序中创建 Redis 客户端:
let client = require('redis').createClient('/var/run/redis/redis.sock');
重启服务器后,我在日志中看到以下错误:
错误:与 /var/run/redis/redis.sock 的 Redis 连接失败 - 连接 ENOENT /var/run/redis/redis.sock 0|服务器|在 PipeConnectWrap.afterConnect [as oncomplete] (net.js:1158:14)
我还尝试了对 redis.conf 的以下更改:
#bind 127.0.0.1(注释掉该行)
unixsocket /tmp/redis.sock(这是我看到别人使用的值;在Node app里也做了相应的改动)
unixsocketperm 777(暂时放宽权限排除权限问题)
这些更改都没有解决错误。请注意,如果我 not 尝试使用 Unix 套接字,Node 应用程序和 Redis 可以正常工作(没有错误)。有谁知道我做错了什么?
【问题讨论】:
标签: node.js redis node-redis