问题陈述:
各种花园式的分布式锁定。
为服务运行分布式锁定,该服务正在运行多个实例。
要在1个主节点和2个从节点上运行的'redis'上获取锁定。
实施:
服务实例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” ?
我们(作为开发人员)是否需要对哈希冲突进行编程?
注意:这两个对象将具有不同的hashCode(服务实例1将不知道服务实例2的对象的哈希码)