46 lines
		
	
	
		
			792 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			792 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
class RedisConnection
 | 
						|
  class << self
 | 
						|
    def establish_pool(new_pool_size)
 | 
						|
      @pool&.shutdown(&:close)
 | 
						|
      @pool = ConnectionPool.new(size: new_pool_size) { new.connection }
 | 
						|
    end
 | 
						|
 | 
						|
    delegate :with, to: :pool
 | 
						|
 | 
						|
    def pool
 | 
						|
      @pool ||= establish_pool(pool_size)
 | 
						|
    end
 | 
						|
 | 
						|
    def pool_size
 | 
						|
      if Sidekiq.server?
 | 
						|
        Sidekiq[:concurrency]
 | 
						|
      else
 | 
						|
        ENV['MAX_THREADS'] || 5
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  attr_reader :config
 | 
						|
 | 
						|
  def initialize
 | 
						|
    @config = REDIS_CONFIGURATION.base
 | 
						|
  end
 | 
						|
 | 
						|
  def connection
 | 
						|
    namespace = config[:namespace]
 | 
						|
    if namespace.present?
 | 
						|
      Redis::Namespace.new(namespace, redis: raw_connection)
 | 
						|
    else
 | 
						|
      raw_connection
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  private
 | 
						|
 | 
						|
  def raw_connection
 | 
						|
    Redis.new(**config)
 | 
						|
  end
 | 
						|
end
 |