加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在生产环境中配置Redis Sidekiq

发布时间:2020-12-17 02:44:54 所属栏目:百科 来源:网络整理
导读:我正试图在Passenger / Rails生产环境中设置Redis Sidekiq,并且遇到了一些困惑. 服务器上运行了许多小型应用程序.我确信这些应用程序中不止一个会利用Sidekiq提供的延迟处理. 我的第一个想法是使用namespace option in Sidekiq为每个Rails应用程序创建一个命
我正试图在Passenger / Rails生产环境中设置Redis Sidekiq,并且遇到了一些困惑.

服务器上运行了许多小型应用程序.我确信这些应用程序中不止一个会利用Sidekiq提供的延迟处理.

我的第一个想法是使用namespace option in Sidekiq为每个Rails应用程序创建一个命名空间.

但后来我注意到在redis.conf中设置了一个数据库16,我想知道它到底是做什么的.除了配置中的注释之外,我似乎无法找到它的文档:

# Set the number of databases. The default database is DB 0,you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and 'databases'-1
databases 16

那么,想知道16’数据库’的默认/示例是否意味着我可以将DB0用于一个应用程序而将DB1用于另一个应用程序?!?我不认为这个假设是正确的,但我找不到更多的信息,除了:

Redis Cluster does not support multiple databases like the stand alone
version of Redis,there is just database 0,and SELECT is not allowed.

希望有人可以告诉我如何分享Sidekiq& Redis在同一服务器上运行的各种Rails应用程序之间.

解决方法

您可以使用多个Redis数据库;每个都与一台机器上的Rails应用程序相关联.您可以将文件sidekiq.rb放在初始值设定项中,使用以下代码:

app_name = Rails.application.class.parent_name

app_num = case app_name
  when 'AppOne'
    0
  when 'AppTwo'
    1
  when 'AppOne'
    2
  end

Redis.new(db: app_num) # existing DB is selected if already present

Sidekiq.configure_server do |config|
  config.redis = { url: "redis://localhost:6379/#{app_num}",namespace: "#{app_name}" }
end

Sidekiq.configure_client do |config|
  config.redis = { url: "redis://localhost:6379/#{app_num}",namespace: "#{app_name}" }
end

通过这种方式,您可以通过Sidekiq进程分离Redis DB和命名空间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读