簡體   English   中英

在Sidekiq和Rails之間共享Redis池

[英]Share Redis pool between Sidekiq & Rails

在Rails和Sidekiq之間共享Redis連接池的最佳實踐是什么?

我已經在初始化程序中做到了:

Sidekiq.configure_client do |config|
  pool = ConnectionPool.new(size: 1, timeout: 5) { Redis.new(host: redis_config['host'], port: redis_config['port'], db: redis_config['database']) }
  config.redis  = pool
  Redis.current = pool
end

Sidekiq.configure_server do |config|
  pool = ConnectionPool.new(size: 10, timeout: 5) { Redis.new(host: redis_config['host'], port: redis_config['port'], db: redis_config['database']) }
  config.redis  = pool
  Redis.current = pool
  config.server_middleware do |chain|
    chain.add Kiqstand::Middleware
  end
end

但是在Sidekiq街區設置Rails Redis池不是很干凈...任何想法嗎?

看了Sidekiq的源代碼之后,Sidekiq.server了嗎? 方法應該是一個更好的選擇。 我已經為此更改了初始化代碼:

# Redis config
Redis.current = ConnectionPool.new(size: (Sidekiq.server? ? 15 : 1), timeout: 5) do 
  Redis.new host: redis_config['host'], port: redis_config['port'], db: redis_config['database']
end

# Sidekiq config
Sidekiq.configure_client do |config|
  config.redis = Redis.current
end

Sidekiq.configure_server do |config|
  config.redis = Redis.current
  config.server_middleware do |chain|
    chain.add Kiqstand::Middleware
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM