Всегда ли SETNX выполняется на master-сервере redis в дозорной системе? - PullRequest
0 голосов
/ 27 февраля 2020

хотел спросить

  1. , гарантированно ли команда SETNX (и тест NX, и SET) выполнялась на master-устройстве redis в контексте «Redis Sentinel System»?
  2. если он гарантированно будет атомом c в контексте "Redis Sentinel System"?

Мое понимание после прочтения документации - ДА для обоих, потому что:

  • Объявление. 1 только мастер может принимать записи, и так как SETNX имеет компонент set / write, он должен go мастеру (потому что все записи go через мастер).
  • Ad. 2, поскольку SET будет выполняться на ведущем устройстве, имеет смысл проверять часть NX также на ведущем устройстве (никаких подчиненных устройств не запрашивалось), в противном случае это потребовало бы много времени и могло бы подорвать атомарность.

Может кто-то подтвердить со 100% уверенностью, может быть, укажет мне какую-нибудь документацию, которая прояснит мои сомнения. Заранее спасибо!

1 Ответ

0 голосов
/ 28 февраля 2020

Я могу подтвердить вышеизложенное с уверенностью% 99,97 (3 сигмы).

Ad. 1 только мастер может принимать записи, и так как SETNX имеет компонент set / write, он должен go к мастеру (потому что все записи go через мастер).

Правильно, исключая сценарий, в котором вы намеренно включаете запись в реплики и подключаетесь к реплике.

Объявление. 2, поскольку SET будет выполняться на ведущем устройстве, имеет смысл проверять часть NX также на ведущем устройстве (никаких подчиненных устройств не запрашивалось), иначе это потребовало бы много времени и могло бы подорвать атомарность.

Да.

...