Go Redis中文文档

Redis集群

Preview
  • Redis Cluster 集群

Redis Cluster 集群

提示 要了解如何使用 go-redis 客户端,请参阅 入门 指南。

go-redis 支持 Redis Cluster 客户端, 如下面示例,redis.ClusterClient 表示集群对象,对集群内每个redis节点使用 redis.Client 对象进行通信,每个 redis.Client 会拥有单独的连接池。

连接到redis集群示例,更多配置参数,请参照 redis.ClusterOptions:

import "github.com/redis/go-redis/v9"

rdb := redis.NewClusterClient(&redis.ClusterOptions{
    Addrs: []string{":7000", ":7001", ":7002", ":7003", ":7004", ":7005"},
})

遍历每个节点:

err := rdb.ForEachShard(ctx, func(ctx context.Context, shard *redis.Client) error {
    return shard.Ping(ctx).Err()
})
if err != nil {
    panic(err)
}

只遍历主节点请使用: ForEachMaster, 只遍历从节点请使用: ForEachSlave

你也可以自定义的设置每个节点的初始化:

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)
    },
})