Проблема с переключением основного устройства на подчиненный в go -redis Ручной кластер - PullRequest
0 голосов
/ 11 апреля 2020

У меня проблемы с кластерной функциональностью go-redis; Я использую go-redis cluster со своим собственным ClusterSlots fun c для поддержки информации о слотах кластера, и мой redis - это не кластер, а набор узлов master / slave redis. Мои подчиненные узлы по сути являются репликами, поэтому я не хочу отправлять им какие-либо операции записи.

Приложение работает нормально в среде высокой нагрузки около двух часов, и оно начало отправлять запросы записи на подчиненные узлы. Я установил MaxRedirects на -1 и ReadOnly на false, но, похоже, клиент не выбирает ТОЛЬКО мастер-узел и сбой / тайм-аут вместо аварийного переключения на подчиненное устройство.

Вот мой redis.ClusterOptions:

    redisConf := &redis.ClusterOptions{

        ReadOnly:      false,
        RouteRandomly: false,

        MinIdleConns: 150,
        MaxRetries: 16,
        MaxRedirects: -1,
        PoolSize: 2000,

        ReadTimeout: time.Millisecond * 5000,
        WriteTimeout: time.Millisecond * 5000,
        DialTimeout: time.Millisecond * 5000,
        PoolTimeout: time.Millisecond * 7000,

        IdleCheckFrequency: time.Minute * 1,
    }

Пожалуйста, посоветуйте, как мне настроить мою конфигурацию кластера go-redis, чтобы она общалась только с главными узлами. Заранее спасибо.

...