RedisZ - Redis Super

Full featured Redis adapter for Elixir based on Redix.

  • No downgrade from Redix: pipeline concurrency & auto reconnection.
  • Parallel connection pooling.
  • Sharding support.
  • Auto reconnect at Amazon ElastiCache Multi-AZ failover.

Hex.pm Build Status

Usage

Start RedisZ in your application.

defmodule Example.Application do
  @moduledoc false

  use Application

  def start(_type, _args) do
    children = [
      {RedisZ, name: Example.Redis, pool_size: 4, urls: ["redis://localhost/0", "redis://localhost/1"]},
    ]

    opts = [strategy: :one_for_one, name: Orange.Supervisor]
    Supervisor.start_link(children, opts)
  end
end

Call RedisZ like Redix.

"OK" = RedisZ.command!(Example.Redis, ["SETEX", "mykey", 10, "Hello"])
[3600, "Hello"] = RedisZ.pipeline!(Example.Redis, [["TTL", "mykey"], ["GET", "mykey"]])

Installation

Add :redis_z at mix.exs.

def deps do
  [
    {:redis_z, "~> 0.1"}
  ]
end

Architecture

processes

TODO

  • [ ] Redis sentinel support.
  • [ ] Redis cluster support.
  • [ ] Online resharding.
  • [ ] Controll connection pool size dynamically.
  • [ ] Support commands for multiple shards.
  • [ ] MULTI EXEC support.
  • [ ] BLPOP BRPOP BRPOPLPUSH support.
  • [ ] SCAN support
  • [ ] PubSub support. Use Redix.PubSub & Phoenix.PubSub.RedisZ.