Pooling & sharding support parallel Redis adapter base on Redix.
- No downgrade from Redix: pipeline concurrency & auto reconnection.
- Parallel connection pooling.
- Sharding support.
- Auto reconnect at Amazon ElastiCache Multi-AZ failover.
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"])
[10, "Hello"] = RedisZ.pipeline!(Example.Redis, [["TTL", "mykey"], ["GET", "mykey"]])
You can specify shard like Redis Cluster. {momonga}1
& {momonga}2
are stored at the same shard.
["OK", "OK"] = RedisZ.pipeline!(Example.Redis, ["SET", "{momonga}1", "Hello"], ["SET", "{momonga}2", "Hello"])
Add :redis_z
at mix.exs
.
def deps do
[
{:redis_z, "~> 0.3"}
]
end
- 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.