Как использовать сокет Unix с node-redis? - PullRequest
0 голосов
/ 26 августа 2018

У меня есть сервер под управлением Node.js и Redis. Я использую пакет node-redis для подключения моего Node-приложения к Redis. Приложение Node и Redis работают на одном сервере (на одном сервере). В документации node-redis на GitHub говорится, что пропускная способность подключения Redis может быть увеличена с помощью сокета Unix при использовании конфигурации с одним сервером. Как правильно настроить Redis / node-redis для использования сокета Unix?

Я попытался раскомментировать строки unixsocket /var/run/redis/redis.sock и unixsocketperm 700 в файле redis.conf , а затем создал клиента Redis в приложении Node, указав:

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 [as oncomplete] (net.js: 1158: 14)

Я также попытался внести следующие изменения в redis.conf :

#bind 127.0.0.1 (комментируя строку)

unixsocket /tmp/redis.sock (это значение, которое я вижу, используется другими; также внесены соответствующие изменения в приложение Node)

unixsocketperm 777 (временное ослабление разрешений для исключения проблем с разрешениями)

Ни одно из этих изменений не устранило ошибку. Обратите внимание, что приложение Node и Redis прекрасно работают вместе (без ошибок), если я не пытаюсь использовать сокет Unix. Кто-нибудь видит, что я делаю не так?

1 Ответ

0 голосов
/ 30 августа 2018

Вы можете установить свойства пути для параметров.

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