Я создаю программу, которая может преобразовывать числа в некоторые серийные номера по некоторым правилам и проверять, используются ли серийные номера. И я использую redis для выполнения проверки.Как обеспечить согласованность данных между master и slave в redis
Сначала введите num1 в раб. когда результат не равен нулю, это означает, что используется серийный номер, поэтому return 'used'.
Во-вторых, если результат равен нулю, установите num1 в мастера и вернуть «новый» (когда-то вернуться, то НУМС значит «использовать»)
Проблема заключается в том, что мастер будет врезаться, прежде чем завершить процесс синхронизации с раб, поэтому число может быть не в рабстве. В это время получите num1 в slave, он возвращает 'new', но используется num1.
Как обеспечить согласованность данных между мастером и подчиненным в redis?
Redis может достичь только последовательности. Почему бы не прочитать от мастера? Также для восстановления после сбоя вы должны настроить Redis с сохранением. –
@for_stack сбойный мастер не сможет перезагрузиться. Означает ли это, что нужно проверить состояние синхронизации перед тем, как предпринять дальнейшие действия, такие как «return» new » – chenwh
Думаю, вам следует писать и читать с мастера. Если мастер терпит неудачу, Redis sentinel выберет раб как новый мастер. Затем вы переключаетесь на новый мастер для чтения и записи. Однако вы можете потерять некоторые данные. Если вы хотите добиться потери данных, вам может потребоваться рассмотреть некоторые другие базы данных. –