Постановка задачи:
Разнообразие распределенных блокировок в саду.
Реализация распределенной блокировки для службы, в которой запущено несколько экземпляров.
Блокировка должна быть взята на 'redis', работающем на 1 ведущем и 2 ведомых.
Реализация:
Экземпляр обслуживания 1
RLock lock11 = redisson.getLock("lock11");
RLock lock12 = redisson.getLock("lock12");
RLock lock13 = redisson.getLock("lock13");
RedissonRedLock lock = new RedissonRedLock(lock11, lock12, lock13);
lock.lock();
//...
lock.unlock();
Экземпляр службы 2
RLock lock21 = redisson.getLock("lock21");
RLock lock22 = redisson.getLock("lock22");
RLock lock23 = redisson.getLock("lock23");
RedissonRedLock lock = new RedissonRedLock(lock21, lock22, lock23);
lock.lock();
//...
lock.unlock();
Ожидаемое поведение:
Если экземпляр службы 1 берет блокировку, то экземпляр службы 2 НЕ ДОЛЖЕН иметь возможностьвзять замок(для распределенной блокировки - это должно быть нормальным поведением)
Вопрос:
Как Redis узнает, что объект "lock11" предназначен длябыть созданным исключительно для объекта "lock21" ?
Нужно ли нам (как разработчикам) программировать что-либо для коллизии хэшей?
Примечание: два объекта будут иметь разныеhashCodes (экземпляр службы 1 НЕ будет знать хеш-код объекта экземпляра службы 2)