Utiliza un grupo de conexiones global independiente para el código de su aplicación. Ponga algo como esto en su inicializador redis.rb:
require 'connection_pool'
REDIS = ConnectionPool.new(size: 10) { Redis.new }
Ahora, en el código de su aplicación en cualquier lugar, puede hacer esto:
REDIS.with do |conn|
# some redis operations
end
Tendrás hasta 10 conexiones para compartir entre tus trabajadores de puma/sidekiq. Esto conducirá a un mejor rendimiento ya que, como notó correctamente, no tendrá todos los subprocesos peleando por una sola conexión de Redis.
Todo esto está documentado aquí:https://github.com/mperham/sidekiq/wiki/Advanced-Options#connection-pooling