0

Golang 和 redis 新手。我在亚马逊有一个有 9 个节点的 redis 集群。3个主人,每个主人有2个奴隶。共有九个节点。不使用 RetryConn 会返回 MOVED 节点错误,使用它会返回 null。提供所有节点的 IP 地址是否重要?是否可以提供 amz 在我们创建集群时提供的主机名。

cluster = redisc.Cluster{
         StartupNodes: []string{"*****"},
         DialOptions:  []redis.DialOption{redis.DialConnectTimeout(5 * 
time.Minute)},
         CreatePool: createPool,
         }
         if err := cluster.Refresh(); err != nil {
             log.Fatalf("Refresh failed: %v", err)
         }else{
             log.Println("Refresh worked")
         } 

func createPool(addr string, opts ...redis.DialOption) (*redis.Pool, 
error) {
return &redis.Pool{
    MaxIdle:     5,
    MaxActive:   10,
    IdleTimeout: time.Minute,
    Dial: func() (redis.Conn, error) {
        c, err := redis.Dial("tcp", "***", opts...)
        if err != nil {
            log.Panic(err)
        }        

}, nil

}

func RedisConnection() redis.Conn {  
// grab a connection from the pool
conn := cluster.Get()
if(conn != nil){
    rc, err := redisc.RetryConn(conn, 9, 1*time.Second)
    if(err ==nil){
        return rc
    }
    return nil
  }
}

我究竟做错了什么?另外,我们如何绑定所需的 conn?任何见解都会非常有帮助

4

0 回答 0