Ruby 配置多个服务器以支持sidekiq

Ruby 配置多个服务器以支持sidekiq,ruby,redis,sidekiq,Ruby,Redis,Sidekiq,我计划将redis服务器迁移到一个运行sidekiq的新服务器,但不想停止当前应用程序的运行。我不想使用redis cluster,它仍然是alpha版本。 我的想法是让sidekiq向新的redis服务器写入数据,但同时从这两个服务器中提取数据,这样,一旦旧redis中的工作人员完成,新的工作人员就可以完全接管所有工作人员。我认为这个解决方案是可行的,但我不知道如何实现 这是我的sidekiq.rb: sidkiq_config = YAML.load(ERB.new(Rails.root.j

我计划将redis服务器迁移到一个运行sidekiq的新服务器,但不想停止当前应用程序的运行。我不想使用redis cluster,它仍然是alpha版本。 我的想法是让sidekiq向新的redis服务器写入数据,但同时从这两个服务器中提取数据,这样,一旦旧redis中的工作人员完成,新的工作人员就可以完全接管所有工作人员。我认为这个解决方案是可行的,但我不知道如何实现

这是我的sidekiq.rb:

sidkiq_config = YAML.load(ERB.new(Rails.root.join('config/redis.yml').read).result)

Sidekiq.configure_server do |config|
  config.logger.level = Logger::ERROR
  config.redis = { :url => "redis://redis2.staging:6379", :namespace => "app_#{Rails.env}:sidekiq" }
  config.redis = { :url => "redis://redis.staging:6379", :namespace => "app_#{Rails.env}:sidekiq" }
end

Sidekiq.configure_client do |config|
  config.logger.level = Logger::ERROR
  config.redis = { :url => "redis://redis2.staging:6379", :namespace => "app_#{Rails.env}:sidekiq" }
end

我认为最简单的解决方案是运行两个sidekiq实例——一个从旧集群读取,另一个从新集群读取

sidkiq_config = YAML.load(ERB.new(Rails.root.join('config/redis.yml').read).result)

Sidekiq.configure_server do |config|
  config.logger.level = Logger::ERROR
  if ENV['read_from_new']
    config.redis = { :url => "redis://redis2.staging:6379", :namespace => "app_#{Rails.env}:sidekiq" }
  else 
    config.redis = { :url => "redis://redis.staging:6379", :namespace => "app_#{Rails.env}:sidekiq" }
  end
end

Sidekiq.configure_client do |config|
  config.logger.level = Logger::ERROR
  config.redis = { :url => "redis://redis2.staging:6379", :namespace => "app_#{Rails.env}:sidekiq" }
end