Клиент Dalli — как подключиться к сокету unix?

#ruby-on-rails #ruby #ruby-on-rails-3 #caching #memcached

#ruby-on-rails #ruby #ruby-on-rails-3 #кэширование #memcached

Вопрос:

Клиент Dalli немного быстрее, чем стандартная библиотека memcached.

Клиент может быть инициализирован: dc = Dalli::Client.new('localhost:11211')

Но теперь мне нужно создать клиент, используя сокет unix, например, файл «tmp / memcached.sock» (это хорошее ускорение). После прочтения документации, кода и примеров я не знаю, как создать клиент на основе сокета. Буду признателен за любую помощь

Ответ №1:

Наконец, я принял решение заставить dalli работать с сокетами unix. Теперь это можно будет сделать:

 Dalli::Client.new("/tmp/memcached.sock")
  

Редактировать:
для людей, ищущих ответы, почему сокет unix не работает — он был удален в версии 2.x (если вы хотите использовать UNIXSocket, пожалуйста, используйте последнюю версию 1.x, см.https://github.com/mperham/dalli/issues/273 )

Ответ №2:

Вы можете запустить memcached с сокетом, используя команду, подобную memcached -d -u someuser -s /tmp/memcached.sock -a 00755 Эта команда запускала бы Memcached как dameon, для пользователя было бы установлено значение someuser, а расположение сокета было бы /tmp / memcached.sock с правами доступа 775.

Возможно, ваша установка уже создала этот сокет по умолчанию, поэтому попробуйте заменить URI на расположение сокета выше, и это может сработать, используя что-то вроде этого:

 dc = Dalli::Client.new('/tmp/memcached.sock')
  

Если у вас это не работает, возможно, потребуется создать сокет или он может находиться в другом месте.

Комментарии:

1. irb (main):005:0> Dalli::Client.new(«/tmp/memcached.sock»).set(«A», «B») Ошибка SocketError: getaddrinfo: имя или служба неизвестны

Ответ №3:

На данный момент только версии 1 Dalli поддерживают сокеты. Измените свой Gemfile так, чтобы он ссылался на ветку v1, или измените конфигурацию Dalli так, чтобы она ссылалась на Memcached с использованием port.

 # Gemfile
gem 'dalli', '~>1.1' # for socket support
  

Поддержка сокетов была прекращена в Dalli v2.

Цитировать: https://github.com/mperham/dalli/issues/273