Current section
Files
Jump to
Current section
Files
lib/supervisor.ex
defmodule RedisPoolex.Supervisor do
require Logger
@moduledoc """
Redis connection pool supervisor to handle connections via pool and
reduce the number of opened connections via GenServer.
"""
use Supervisor
def start_link do
:supervisor.start_link(__MODULE__, [])
end
# TODO: add it as config options instead of compiled variables
@pool_name :redis_pool
alias RedisPoolex.Config
def init([]) do
# Here are my pool options
pool_options = [
name: {:local, @pool_name},
worker_module: RedisPoolex.Worker,
size: Config.get(:pool_size, 10),
max_overflow: Config.get(:pool_max_overflow, 1)
]
children = [
:poolboy.child_spec(@pool_name, pool_options, [])
]
supervise(children, strategy: :one_for_one)
end
def q(command, params) do
:poolboy.transaction(@pool_name, fn(worker) -> GenServer.call(worker, %{command: command, params: params}) end)
end
end