#c# #.net #redis #stackexchange.redis #redis-sentinel
Вопрос:
Установка
Использование 2 серверов Redis в Linux в производстве
Использование Sentinel для обеспечения высокой доступности
Обмен стеками.Версия пакета Redis Nuget-1.2.6
Служба Windows .NET 4.5 использует кэш Redis.
Служба Windows находится в системе балансировки нагрузки.
Поток приложений
Шаг 1
Первый запрос содержит запрос на утверждение, идущий от клиента к конечной точке. Уникальный идентификатор транзакции генерируется и сохраняется (срок действия составляет 60 минут) в кэше Redis для следующего запроса на изменение
Шаг 2 Запрос на внесение изменений отправляется клиентом в течение нескольких минут после запроса на утверждение. Идентификатор транзакции, сохраненный на предыдущем шаге, необходимо извлечь из службы Redis и прикрепить к запросу на изменение, который будет отправлен в конечную точку.
Проблема, с которой мы сталкиваемся, заключается в том, что во время запроса на изменение поиск уникального идентификатора транзакции завершается ошибкой и возвращает нулевое значение. Мы используем метод StringGetAsync для получения значения из кэша Redis. Это работает в большинстве случаев, и некоторые из них терпят неудачу.
Эти два шага могут быть выполнены на любом из серверов фермы. У нас есть журналы, чтобы убедиться, что установка значения в службе Redis возвращает значение true.
Информация журналов Redis ограничена операциями синхронизации.
Нужна помощь в устранении неполадок/решении этой проблемы.
Комментарии:
1. Пожалуйста, предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Ответ №1:
Спасибо за ответ. При дальнейшем расследовании выяснилось, что служба Sentinel находилась в остановленном состоянии на всех серверах Redis. Запуск службы Sentinel решил проблему.