Как использовать сокет Unix с node-redis?

У меня есть сервер, на котором работают Node.js и Redis. Я использую пакет node-redis для подключения своего приложения Node к Redis. Приложение Node и Redis работают на одном сервере (тот же сервер). В документации по узлу-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|server | в PipeConnectWrap.afterConnect [как oncomplete] (net.js:1158:14)

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

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

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

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

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


person Bob Arlof    schedule 26.08.2018    source источник


Ответы (1)


Вы можете установить свойство path в options.

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