如何将 Unix 套接字与 node-redis 一起使用?



我有一个同时运行 Node.js 和 Redis 的服务器。我正在使用 node-redis 包将我的 Node 应用程序连接到 Redis。Node 应用程序和 Redis 都在单个服务器(同一服务器(上运行。GitHub 上的 node-redis 文档指出,在使用单服务器配置时,可以通过使用 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 套接字,节点应用程序和 Redis 可以很好地协同工作(没有错误(。有人看到我做错了什么吗?

可以将路径属性设置为选项。

const redis = require('redis');
const redisClient = redis.createClient({
path: '/var/run/redis/redis.sock'
});

最新更新