首页 > 解决方案 > Golang Redis Sentinel 客户端

问题描述

我正在为一个用 Go 编写的开源项目添加 Redis 支持。目标是支持所有 Redis 拓扑:服务器、集群、哨兵。

我浏览了redis.io/clients中列出的 Go 客户端,似乎github.com/go-redis/redis项目是一个可行的选择。

我主要关心的是NewSentinelClient()方法接受单个哨兵地址。根据 Redis 客户端指南 ( redis.io/topics/sentinel-clients#guidelines-for-redis-clients-with-support-for-redis-sentinel ),“客户端应迭代 Sentinel 地址列表。”

如果SentinelClient只有一个哨兵地址,它如何遍历其余哨兵实例?

我错过了什么吗?

在同一主题上,有人可以推荐另一个可能适合这种情况的 Go Redis 客户端吗?

标签: redisredis-cluster

解决方案


如果您有多个哨兵,请使用NewFailoverClient 。

rdb := redis.NewFailoverClient(&redis.FailoverOptions{
    MasterName: "mymaster",
    SentinelAddrs: []string{
        "sentinel_1:26379",
        "sentinel_2:26379",
        "sentinel_3:26379",
    },
})

推荐阅读