Rails 应用程序中的默认 Sidekiq Redis 配置

Posted

技术标签:

【中文标题】Rails 应用程序中的默认 Sidekiq Redis 配置【英文标题】:Default Sidekiq Redis configuration in Rails app 【发布时间】:2017-06-24 07:28:14 【问题描述】:

我正在尝试了解 Passenger+Rails 应用程序中的 Redis 和 Sidekiq 配置,但遇到了一些缺乏了解的情况。我独立于我的 Rails 应用程序启动 redis 服务器,而 Sidekiq 是我的 Rails 应用程序中的一个宝石。我同样启动它:(我不需要 sidekiq.yml 文件)

捆绑执行sidekiq

以下是我的 sidekiq.rb 初始化程序:

require 'sidekiq'
require 'sidekiq-status'

Sidekiq.configure_client do |config|
  config.client_middleware do |chain|
    chain.add Sidekiq::Status::ClientMiddleware
  end
end

Sidekiq.configure_server do |config|
  config.server_middleware do |chain|
    chain.add Sidekiq::Status::ServerMiddleware, expiration: 30.minutes
  end
  config.client_middleware do |chain|
    chain.add Sidekiq::Status::ClientMiddleware
  end
end

我参加了一些图书馆课程,但无济于事。

我想了解 Sidekiq 在哪里配置它的 Redis 服务器详细信息。它默认为localhost:6379,但我不太确定如何。 另外,如果我以后想使用 Memcached,我该如何改变呢?

【问题讨论】:

【参考方案1】:

来自 sidekiq 文档:

默认情况下,Sidekiq 会尝试在 localhost:6379 连接到 Redis

https://github.com/mperham/sidekiq/wiki/Using-Redis

您可以在初始化程序中更改端口:

 Sidekiq.configure_server do |config|
      config.redis =  url: 'redis://redis.example.com:7372/12' 
 end

从外观上看,sidekiq 只适用于 redis

Sidekiq 使用 Redis 存储其所有作业和操作数据。

【讨论】:

哦,我好像错过了。谢谢@Joel_Blum /12 对应什么?在网站上的示例中,现在似乎表明您应该使用 /0 作为后缀,但我仍然不明白它代表什么? 数据库编号mikeperham.com/2015/09/24/storing-data-with-redis/…。【参考方案2】:

这是我从另一个答案中所做的:

# frozen_string_literal: true
Sidekiq.configure_server do |config|
  config.redis = 
    url: ENV.fetch("SIDEKIQ_REDIS_URL", "redis://localhost:6379/1")
  
end

【讨论】:

以上是关于Rails 应用程序中的默认 Sidekiq Redis 配置的主要内容,如果未能解决你的问题,请参考以下文章

Rails,RabbitMQ和Sidekiq架构[关闭]

Docker-compose 与 redis、sidekiq、rails SocketError

部署Cloud66和DigitalOcean的Rails不会影响当前正在运行的sidekiq进程

Rails 6主动存储sidekiq文件在S3上上传背景图片

如何将 ApplicationMailer(或 ActionMailer)设置为默认使用 Activejob/sidekiq

在多线程 Rails 环境中使用 Redis 的最佳方式是啥? (彪马/Sidekiq)