sql >> Databasteknik >  >> NoSQL >> Redis

Vilket är det bästa sättet att använda Redis i en multi-threaded Rails-miljö? (Puma / Sidekiq)

Du använder en separat global anslutningspool för din applikationskod. Lägg något så här i din redis.rb initializer:

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

Nu i din applikationskod var som helst kan du göra detta:

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

Du har upp till 10 anslutningar att dela mellan dina puma/sidekiq-arbetare. Detta kommer att leda till bättre prestanda eftersom, som du korrekt noterar, du inte kommer att ha alla trådar som slåss om en enda Redis-anslutning.

Allt detta dokumenteras här:https://github.com/mperham/sidekiq/wiki/Advanced-Options#connection-pooling




  1. Heroku:Bakgrundsuppgifter i Python med RQ

  2. Arkitektur för Redis cache &Mongo för uthållighet

  3. sparar bild till mongodb

  4. Mongodb aggregat:konvertera datum till en annan tidszon