Как подключиться к отказоустойчивой репликации Redis при использовании библиотеки go-redis
В режиме кластера redis, даже если один из зарегистрированных мастеров завершает работу, перенаправление выполняется, и приложение работает без каких-либо проблем.
package main
import (
"fmt"
"github.com/go-redis/redis"
"log"
"strconv"
"time"
)
func main() {
c := redis.NewClient(&redis.Options{
Addr: "127.0.0.1:6379",
Password: "",
DB: 0,
})
if err := c.Ping().Err(); err != nil {
panic("Unable to connect to redis " + err.Error())
}
c.FlushDB()
c.FlushAll()
for i := 1; i <= 7; i++ {
key := "key" + strconv.Itoa(i)
ret, err := c.Set(key, "value" + strconv.Itoa(i), 0).Result()
if err != nil || ret != "OK" {
fmt.Println(err)
panic("redis set failed")
}
}
for true {
for i := 1; i <= 7; i++ {
key := "key" + strconv.Itoa(i)
val, err := c.Get(key).Result()
log.Println(key + " : " + val)
if err == redis.Nil {
continue
}
if err != nil {
log.Println(err)
continue
}
}
fmt.Println()
time.Sleep(1 * time.Second)
}
}
В одной конфигурации репликации мастера Redis после выполнения вышеуказанного кода, если вы завершите работу мастера Redis, возникает следующая ошибка.
dial tcp 127.0.0.1:6379: connectex: No connection could be made because the target machine actively refused it.
Есть ли способ безошибочно подключить приложение к репликации redis в единой конфигурации мастер-репликации Redis с использованием go-redis, даже если мастер отключен?