我们有一个 go lang 服务,它将转到 redis,为每个请求获取数据,我们也想从 redis 从节点读取数据。我们浏览了 redis 和 go-redis 库的文档,发现为了从 redis slave 读取数据,我们应该从 redis 端触发 readonly 命令。我们在 go-redis 库上使用 ClusterOptions 来设置与 redis 的只读连接。
redis.NewClusterClient(&redis.ClusterOptions{
Addrs: []string{redisAddress},
Password: "",
ReadOnly: true,
})
完成所有这些之后,我们能够看到(使用监控)读取请求仅由主节点处理。我希望这不是预期的,我错过了一些东西或做错了。任何指针将不胜感激来解决这个问题。
更多上下文:上面代码中的 redisAddress 是单个 kubernetes 集群 IP。Redis 使用 kubernetes operator 部署,每个 master 有 3 个 master 和 1 个副本。