Skip to content

Advanced Locking

Redlock4j provides advanced distributed synchronization primitives beyond basic locks.

Available Primitives

Primitive Purpose Details
Redlock Standard mutual exclusion Quorum-based distributed lock
FairLock FIFO ordering Prevents starvation via sorted sets
MultiLock Multi-resource locking Deadlock-free atomic acquisition
ReadWriteLock Reader/writer pattern Multiple readers OR single writer
Semaphore Permit-based limiting Rate limiting, connection pools
CountDownLatch Coordination Wait for N operations to complete

Choosing the Right Primitive

flowchart TD
    A[Need distributed sync?] --> B{Single resource?}
    B -->|Yes| C{Read-heavy?}
    B -->|No| D[MultiLock]
    C -->|Yes| E[ReadWriteLock]
    C -->|No| F{Need fairness?}
    F -->|Yes| G[FairLock]
    F -->|No| H[Redlock]
    A --> I{Rate limiting?}
    I -->|Yes| J[Semaphore]
    A --> K{Wait for N tasks?}
    K -->|Yes| L[CountDownLatch]
Scenario Primitive
Simple mutual exclusion Redlock
Order-sensitive requests FairLock
Multiple resources atomically MultiLock
Many readers, few writers ReadWriteLock
Limited resource pool Semaphore
Coordination barrier CountDownLatch

Timeout Configuration

Always use timeouts to prevent indefinite blocking:

boolean acquired = lock.tryLock(5, TimeUnit.SECONDS);
if (acquired) {
    try {
        // Critical section
    } finally {
        lock.unlock();
    }
} else {
    // Handle timeout
}

Error Handling

Properly handle failures:

Lock lock = null;
try {
    lock = redlockManager.createLock("resource");
    lock.lock();
    // Critical section
} catch (Exception e) {
    logger.error("Error in critical section", e);
} finally {
    if (lock != null) {
        try {
            lock.unlock();
        } catch (Exception e) {
            logger.error("Error releasing lock", e);
        }
    }
}

Performance Considerations

  • Fair locks have higher overhead than regular locks
  • Multi-locks require more Redis operations
  • Read-write locks optimize for read-heavy scenarios
  • Semaphores scale with permit count

Next Steps