Go client for Redis Cluster
TIP
To get an idea how to use go-redis client, see Getting started guide.
go-redis comes with a client for Redis Cluster. Underneath, redis.ClusterClient
uses redis.Client
to comminucate with each node in a cluster. Each redis.Client
maintains a separate pool of connections.
To connect to a Redis Cluster:
import "github.com/redis/go-redis/v9"
rdb := redis.NewClusterClient(&redis.ClusterOptions{
Addrs: []string{":7000", ":7001", ":7002", ":7003", ":7004", ":7005"},
// To route commands by latency or randomly, enable one of the following.
//RouteByLatency: true,
//RouteRandomly: true,
})
To iterate over shards:
err := rdb.ForEachShard(ctx, func(ctx context.Context, shard *redis.Client) error {
return shard.Ping(ctx).Err()
})
if err != nil {
panic(err)
}
To iterate over master nodes, use ForEachMaster
. To iterate over slave nodes, use ForEachSlave
.
To change options for some shard:
rdb := redis.NewClusterClient(&redis.ClusterOptions{
NewClient: func(opt *redis.Options) *redis.NewClient {
user, pass := userPassForAddr(opt.Addr)
opt.Username = user
opt.Password = pass
return redis.NewClient(opt)
},
})