如何使用带有node-redis的Unix套接字?

问题描述 投票:0回答:1

我有一台运行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.sockunixsocketperm 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 | server |在PipeConnectWrap.afterConnect [as oncomplete](net.js:1158:14)

我还尝试了对redis.conf的以下更改:

#bind 127.0.0.1(评论出这条线)

unixsocket /tmp/redis.sock(这是我看到的其他人使用的值;也在Node应用程序中进行了相应的更改)

unixsocketperm 777(临时放宽权限以排除权限问题)

这些更改都没有解决错误。请注意,如果我不尝试使用Unix套接字,那么Node应用程序和Redis可以很好地协同工作(没有错误)。有谁看到我做错了什么?

node.js redis node-redis
1个回答
0
投票

您可以将path属性设置为options。

const redis = require('redis');
const redisClient = redis.createClient({
  path: '/var/run/redis/redis.sock'
});
© www.soinside.com 2019 - 2024. All rights reserved.