我有一台同时运行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');
重新启动服务器后,我在日志中看到以下错误:
错误:Redis与/var/run/redis/redis.sock的连接失败-连接 ENOENT /var/run/redis/redis.sock 0 |服务器|在 PipeConnectWrap.afterConnect [完整完成](net.js:1158:14)
我还尝试了对 redis.conf 的以下更改:
#bind 127.0.0.1
(注释行)
unixsocket /tmp/redis.sock
(这是我看到的其他人使用的值;还对Node应用程序进行了相应的更改)
unixsocketperm 777
(暂时放宽权限以排除权限问题)
这些更改均未解决该错误。请注意,如果我 not 尝试使用Unix套接字,则Node应用程序和Redis可以正常工作(没有错误)。有人看到我在做什么错吗?
答案 0 :(得分:0)
您可以将path属性设置为options。
const redis = require('redis');
const redisClient = redis.createClient({
path: '/var/run/redis/redis.sock'
});