Как реализовать пул соединений для Redis-As-Rails-Cache (используя Redis в качестве rails cache) Rails 4.1?

Как я могу добавить пул соединений в мою настройку Redis?

почему-то я не могу найти какую-либо информацию по этому вопросу. Я использую redis (3.2.0), настроенный так: (можно предположить, что resque_uri и cache_uri были проанализированы перед этим c)

для возврата:

$REDIS_BACKGROUND_JOB =  Redis.new(:host => resque_uri.host, 
                                  :port => resque_uri.port, 
                                  :password => resque_uri.password)

позже в последовательности инициализации, мы делаем

Resque.redis = $REDIS_BACKGROUND_JOB

У нас есть второй экземпляр Redis с другой памятью, лимитом подключения и политикой вытеснения для кэша Rails

$REDIS_CACHE = Redis.new(:host => cache_uri.host, 
                        :port => cache_uri.port, 
                        :password => cache_uri.password)

ОБНОВЛЕНИЕ 2017-02-16@20-17EST: я запускаю два экземпляра redis, один для resque (1.25.2) и другой для слоя кэширования с использованием redis-rails (5.0.1). Я обновил примеры настройки выше. Я подозреваю, что что-то неправильно настроено в инициализации или есть фундаментальное несоответствие установки.

ОБНОВЛЕНИЕ 2017-02-16@21-37EST:

environments/development.rb имеет

config.cache_store = :redis_store, 'redis://localhost:6379/1/cache_store'

1 ответ

Решение

Хорошо, вот что у меня получилось.

добавлен в мой Gemfile

gem 'connection_pool'

Для рельсового кэша:

Инициализация $REDIS_CACHE = Redis.new для кеша Rails неверен, так как Rails делает это внутри config.cache_store установка в вашей среде файлов (config/environments/development.rb, config/environments/production.rb, так далее)

И тогда моя инициализация в моих файлах среды выглядит следующим образом:

config.cache_store = :redis_store, ENV["REDISCLOUD_FOR_RAILS_CACHE_URL"], {pool_size: 10, pool_timeout: 10}

(вы заметите, что ENV["REDISCLOUD_FOR_RAILS_CACHE_URL"] устанавливается как полный URI, включая протокол, имя пользователя, пароль, хост и порт. Альтернативой является передача каждого из них в качестве собственного параметра в хеш.)

Другие вопросы по тегам