我正在向一个用 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 客户端吗?
如果您有多个哨兵,请使用 NewFailoverClient。
rdb := redis.NewFailoverClient(&redis.FailoverOptions{
MasterName: "mymaster",
SentinelAddrs: []string{
"sentinel_1:26379",
"sentinel_2:26379",
"sentinel_3:26379",
},
})
查看 Redis Sentinel Gateway — 它有助于管理 Redis 故障转移,而无需在应用程序代码中实现 Sentinel 支持。非常适合需要高可用性的遗留应用程序!