ruby-on-rails – 在生产环境中配置Redis Sidekiq
我正试图在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用于另一个应用程序?!?我不认为这个假设是正确的,但我找不到更多的信息,除了:
希望有人可以告诉我如何分享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和命名空间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |