Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Qual é a melhor maneira de usar o Redis em um ambiente Rails multithread? (Puma / Sidekiq)


Você usa um pool de conexão global separado para o código do aplicativo. Coloque algo assim no seu inicializador redis.rb:
require 'connection_pool'
REDIS = ConnectionPool.new(size: 10) { Redis.new }

Agora no código do seu aplicativo em qualquer lugar, você pode fazer isso:
REDIS.with do |conn|
  # some redis operations
end

Você terá até 10 conexões para compartilhar entre seus funcionários puma/sidekiq. Isso levará a um melhor desempenho, pois, como você observou corretamente, você não terá todos os threads lutando por uma única conexão Redis.

Tudo isso está documentado aqui:https://github.com/mperham/sidekiq/wiki/Advanced-Options#connection-pooling