sql >> Base de Datos >  >> NoSQL >> Redis

¿Cuál es la mejor manera de usar Redis en un entorno de Rails multiproceso? (Puma / Sidekiq)

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