Как реализовать пул соединений для 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, включая протокол, имя пользователя, пароль, хост и порт. Альтернативой является передача каждого из них в качестве собственного параметра в хеш.)