Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Was ist der beste Weg, Redis in einer Multithread-Rails-Umgebung zu verwenden? (Puma/Sidekiq)

Sie verwenden einen separaten globalen Verbindungspool für Ihren Anwendungscode. Fügen Sie so etwas in Ihren redis.rb-Initialisierer ein:

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

Jetzt können Sie in Ihrem Anwendungscode überall Folgendes tun:

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

Sie haben bis zu 10 Verbindungen, die Sie mit Ihren Puma-/Sidekiq-Mitarbeitern teilen können. Dies führt zu einer besseren Leistung, da, wie Sie richtig bemerkt haben, nicht alle Threads um eine einzelne Redis-Verbindung kämpfen müssen.

All dies ist hier dokumentiert:https://github.com/mperham/sidekiq/wiki/Advanced-Options#connection-pooling