Блокировка на кластере Redis - PullRequest
2 голосов
/ 20 марта 2020

У меня есть кластер Redis из 3 главных узлов, и каждый мастер имеет соответствующие подчиненные узлы. Я хотел бы получить блокировку на кластере для выполнения некоторых операций записи, а затем снять блокировку.

Из того, что я прочитал, - Для подключения к кластеру мы обычно подключаемся к одному узлу в кластере и выполнять все операции на том узле, который, в свою очередь, обрабатывает перенаправление на другие узлы кластера.

Можно ли получить блокировку на кластере Redis? [PS Я использую клиент Redisson] Из примеров в клиенте Redisson в разделе Multilock и redlock (https://github.com/redisson/redisson/wiki/8.-Distributed-locks-and-synchronizers) они получают блокировку на отдельных узлах.

  • Как работает мультиблокировка или красная блокировка на кластере?
  • Как и какую блокировку использовать, если у меня есть кластер Redis?
  • Какие библиотеку (Jedis / Redisson) я использую?

Похоже, что Jedis также поддерживает блокировку кластера (https://github.com/kaidul/jedis-lock).

PS: я много читал об этом, но не смог найти четких ответов о блокировке в кластере. Был бы очень признателен за помощь.

1 Ответ

1 голос
/ 23 марта 2020

Я нашел решение моего вопроса выше.

Поскольку мы используем один и тот же ключ для получения блокировки на всех клиентских узлах, все попытки получить блокировку будут go одинаковыми. узел в кластере Redis. Так что вы можете просто использовать простой Rlock от Redisson.

См. Комментарии к этому вопросу: https://github.com/leandromoreira/redlock-rb/issues/63

...