Как подключиться к отказоустойчивой репликации 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, даже если мастер отключен?

0 ответов

Другие вопросы по тегам