一尘不染

在Sidekiq中使用多个Redis服务器

redis

Sidekiq用来将后台作业处理到我们的Rails项目之一中。我们要使用位于不同位置的其他Redis服务器来ReportDB与其他后台处理作业分开。

根据Sidekiq配置wiki,我们可以像

config / initializers / sidekiq.rb

Sidekiq.configure_server do |config|
   config.redis = { :url => 'redis://redis.example.com:7372/12', :namespace => 'mynamespace' }
end

Sidekiq.configure_client do |config|
   config.redis = { :url => 'redis://redis.example.com:7372/12', :namespace => 'mynamespace' }
end

但是,如何初始化与多个Redis服务器的连接?


阅读 347

收藏
2020-06-20

共1个答案

一尘不染

Sidekiq 2不支持多个Redis服务器,请升级到仅在今天发布的sidekiq 3,并添加所需的新客户端分片功能。

来自:Sidekiq 3发行说明

客户分片

Sidekiq
2.x具有可扩展性限制:一台Redis服务器。实际上,在良好的硬件上,该限制大于每秒5000个作业,因此在大多数情况下这并不算什么大问题,但是一些更激烈的Sidekiq用户正在达到该限制。更新的(Sidekiq
3)Sidekiq :: Client
API使您可以指定要使用的Redis连接池,而不是以前假设Sidekiq.redis全局池,从而可以将不同类型的作业定位到不同的Redis服务器。现在,您可以将Sidekiq扩展到无穷远!

该API几乎完全向后兼容: 唯一的重大变化是在客户端中间件中
。有关更多详细信息,请参阅升级说明

===

2020-06-20