Правильно ли это способ объединения пулов Redis с Sinatra Synchrony?Синхронизация Sinatra с соединением пула Redis
Мой Gemfile выглядит следующим образом:
gem 'sinatra-synchrony'
gem 'hiredis'
gem 'redis'
В Sinatra файлы сервера использовать классический подход в стиле, и в целом выглядят так:
require 'sinatra'
require 'sinatra/synchrony'
require 'redis/connection/hiredis'
require 'redis/connection/synchrony'
require 'redis'
redis = EventMachine::Synchrony::ConnectionPool.new(size: 5) do
Redis.new(path: '/tmp/redis.sock')
end
get/do
# lots of redis reads and writes
end
Я затем запустить несколько экземпляров одного и того же приложения сервера , каждый под другим портом, и используйте nginx для загрузки баланса между ними.
Это подходящее решение для объединения пулов Redis с серверами Sinatra?
Спасибо за этот кусок кода, но у него есть главный недостаток - I не может муза @ redis.multi {...}, он просто зависает. Я думаю, что это связано с использованием другого соединения для команд запуска end end ... –
Я просто обновил пример, чтобы добавить многократный вызов, он отлично работает для меня. Возможно, вы ошиблись в том, что вам нужно использовать соединение, переданное в качестве аргумента в блок. – Schmurfy