Golang和redis新手。我在亚马逊有一个redis集群,有9个节点。 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?任何见解都会非常有用