diff options
author | Starfall <us@starfall.systems> | 2022-04-29 09:20:51 -0500 |
---|---|---|
committer | Starfall <us@starfall.systems> | 2022-04-29 09:20:51 -0500 |
commit | 4eb291e5db6114c8aa564f0c9e7f04d13805b5cc (patch) | |
tree | 1a6affcf635974ccf6d0f650a3bbe2be75c7929e /app/lib/redis_configuration.rb | |
parent | bcaacc42334d75bd361f330989041a9beba101a9 (diff) | |
parent | 252deefe3433d0cedafd973becd0d85b5182eb49 (diff) |
Merge remote-tracking branch 'glitch/main'
Diffstat (limited to 'app/lib/redis_configuration.rb')
-rw-r--r-- | app/lib/redis_configuration.rb | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/app/lib/redis_configuration.rb b/app/lib/redis_configuration.rb new file mode 100644 index 000000000..fc8cf2f80 --- /dev/null +++ b/app/lib/redis_configuration.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +class RedisConfiguration + class << self + def with + pool.with { |redis| yield redis } + end + + def pool + @pool ||= ConnectionPool.new(size: pool_size) { new.connection } + end + + def pool_size + if Sidekiq.server? + Sidekiq.options[:concurrency] + else + ENV['MAX_THREADS'] || 5 + end + end + end + + def connection + if namespace? + Redis::Namespace.new(namespace, redis: raw_connection) + else + raw_connection + end + end + + def namespace? + namespace.present? + end + + def namespace + ENV.fetch('REDIS_NAMESPACE', nil) + end + + def url + ENV['REDIS_URL'] + end + + private + + def raw_connection + Redis.new(url: url, driver: :hiredis) + end +end |