Redis
 sql >> Base de données >  >> NoSQL >> Redis

Quelle est la meilleure façon d'utiliser Redis dans un environnement Rails multithread ? (Puma / Sidékiq)

Vous utilisez un pool de connexions global distinct pour votre code d'application. Mettez quelque chose comme ceci dans votre initialiseur redis.rb :

require 'connection_pool'
REDIS = ConnectionPool.new(size: 10) { Redis.new }

Maintenant, n'importe où dans votre code d'application, vous pouvez faire ceci :

REDIS.with do |conn|
  # some redis operations
end

Vous aurez jusqu'à 10 connexions à partager entre vos collaborateurs puma/sidekiq. Cela conduira à de meilleures performances puisque, comme vous le notez correctement, vous n'aurez pas tous les threads qui se battent sur une seule connexion Redis.

Tout cela est documenté ici :https://github.com/mperham/sidekiq/wiki/Advanced-Options#connection-pooling