Utilizzare un pool di connessioni globale separato per il codice dell'applicazione. Metti qualcosa di simile nel tuo inizializzatore redis.rb:
require 'connection_pool'
REDIS = ConnectionPool.new(size: 10) { Redis.new }
Ora nel codice dell'applicazione ovunque, puoi farlo:
REDIS.with do |conn|
# some redis operations
end
Avrai fino a 10 connessioni da condividere tra i tuoi dipendenti puma/sidekiq. Ciò porterà a prestazioni migliori poiché, come hai notato correttamente, non avrai tutti i thread in conflitto su una singola connessione Redis.
Tutto questo è documentato qui:https://github.com/mperham/sidekiq/wiki/Advanced-Options#connection-pooling