Redis
 sql >> Database >  >> NoSQL >> Redis

Qual è il modo migliore per utilizzare Redis in un ambiente Rails multi-thread? (Puma / Sidekiq)

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