Skip to content

Repository files navigation

RedisPoolex

Redis connection pool for Elixir using poolboy and Redix.

Installation

Add redis_poolex to your dependencies in mix.exs:

def deps do
  [{:redis_poolex, "~> 0.1.0"}]
end

Configuration

In your application config:

import Config

config :redis_poolex,
  connection_string: "redis://127.0.0.1:6379",
  pool_size: 10,
  pool_max_overflow: 1,
  timeout: 5_000

Or with discrete connection options:

import Config

config :redis_poolex,
  host: "127.0.0.1",
  port: 6379,
  password: nil,
  db: 0,
  pool_size: 10,
  pool_max_overflow: 1,
  timeout: 5_000
Option Default Description
:connection_string nil Redis URI. When set, it takes precedence over host/port options.
:host "127.0.0.1" Redis host (used when :connection_string is unset).
:port 6379 Redis port.
:password nil Redis password. Empty strings are treated as no password.
:db 0 Redis database index.
:pool_size 10 Number of Redix workers in the pool.
:pool_max_overflow 1 Extra workers poolboy may start under load.
:timeout 5_000 Pool checkout and command timeout in milliseconds.

Usage

alias RedisPoolex, as: Redis

Redis.query(["SET", "key1", "value1"])
#=> "OK"

Redis.query(["GET", "key1"])
#=> "value1"

Redis.query(["GET", "key2"])
#=> nil

Redis.query_pipe([
  ["SET", "key1", "value1"],
  ["SET", "key2", "value2"]
])
#=> ["OK", "OK"]

query/1 and query_pipe/1 return unwrapped Redis values. Redis errors and connection failures raise.

Development

Redis must be available on 127.0.0.1:6379, or set REDIS_URL.

mix deps.get
mix test
mix format

With Docker:

make build
make test

Breaking changes in 0.1.0

This release replaces the unmaintained exredis client with Redix and requires Elixir 1.15+. Call sites that compared missing keys to :undefined should compare to nil instead. See CHANGELOG.md.

About

Redis pool using poolboy(connection pool) and exredis(redis client).

Topics

Resources

Stars

20 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages