アプリケーションコードには、個別のグローバル接続プールを使用します。次のようなものをredis.rb初期化子に入れます:
require 'connection_pool'
REDIS = ConnectionPool.new(size: 10) { Redis.new }
これで、どこのアプリケーションコードでも、次のことができます。
REDIS.with do |conn|
# some redis operations
end
puma/sidekiqワーカー間で共有できる最大10の接続があります。正しく指摘しているように、単一のRedis接続ですべてのスレッドが競合することはないため、これによりパフォーマンスが向上します。
これらすべてがここに文書化されています:https://github.com/mperham/sidekiq/wiki/Advanced-Options#connection-pooling