1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/moinca-springboot-redislock

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

springboot-redislock

Наименее ресурсозатратная реализация распределённой блокировки Redis, для которой требуется менее 300 строк кода. Требуется только зависимость spring-data-redis, также можно расширить Jedis самостоятельно. Для использования автоматической сборки springboot достаточно переключиться на версию 1.x.

Быстрое начало работы

Идея реализации блокировки основана на повторно входимой блокировке, эта распределённая блокировка поддерживает механизм повторного входа.

Режимы блокировки

  • RedisLock.lock: до успешной блокировки.
  • RedisLock.tryLock: попытка блокировки.

Подготовка

  • Внедрение зависимости spring-data-redis: можно напрямую внедрить в pom, здесь не будет подробного описания.

Преимущества использования

Блокировка выполняется как одна атомарная операция. Блокировка может быть снята из-за сбоя Redis или локально. У некоторых может возникнуть вопрос о разнице между этим методом и использованием setNx с истекающим сроком действия (далее — обычный метод). Ниже приводится сравнение:

  1. redislock поддерживает блокировку повторного входа, аналогично ReentrantLock.
  2. Обычный метод не может решить проблему, когда текущая блокировка снимается другим клиентом в распределённой среде.

Недостатки

Клиент 1 получил блокировку на главном узле Redis. Главный узел упал, а асинхронная репликация записи на подчинённый узел ещё не завершена. Подчинённый узел становится главным узлом, и клиент 2 может получить ту же блокировку, что и клиент 1.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Реализация легковесной распределённой блокировки Redis. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (2)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/moinca-springboot-redislock.git
git@api.gitlife.ru:oschina-mirror/moinca-springboot-redislock.git
oschina-mirror
moinca-springboot-redislock
moinca-springboot-redislock
master