Mel*_*emi 4 ruby-on-rails passenger redis sidekiq
我正试图在Passenger/Rails生产环境中设置Redis + Sidekiq,并且遇到了一些困惑.
服务器上运行了许多小型应用程序.我确信这些应用程序中不止一个会利用Sidekiq提供的延迟处理.
我的第一个想法是使用Sidekiq中的命名空间选项namespace为每个Rails应用程序创建一个.
但后来我注意到了一个databases 16设置redis.conf,我想知道它到底是做什么的.除了配置中的注释之外,我似乎无法找到它的文档:
# 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
Run Code Online (Sandbox Code Playgroud)
那么,想知道16'数据库'的默认/示例是否意味着我可以将DB0用于一个应用程序而将DB1用于另一个应用程序?!?我不认为这个假设是正确的,但我找不到更多的信息,除了:
Redis Cluster不支持多个数据库,例如Redis的独立版本,只有数据库0,不允许SELECT.
希望有人可以告诉我如何在同一服务器上运行的各种Rails应用程序之间共享Sidekiq和Redis.
您可以使用多个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
Run Code Online (Sandbox Code Playgroud)
通过这种方式,您可以通过Sidekiq进程分离Redis DB和命名空间.
| 归档时间: |
|
| 查看次数: |
5911 次 |
| 最近记录: |