Back to Projects

redlock-universal

Distributed Redis locks with universal client support. Featured in the redis.io Redlock implementations.

<1ms

Lock acquisition

Universal

Client support

0

Dependencies

The Problem

Existing Redis lock libraries support only single clients: node-redis OR ioredis, but not both. This forces teams to choose their Redis client based on lock library compatibility, not technical merit.

The Solution

Redlock Algorithm

Full implementation with clock drift handling and distributed consensus

Universal Support

Works with both node-redis v4+ and ioredis v5+ through adapter pattern

Architecture

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  Lock API   │     │  Redlock    │     │   Redis     │
│ (Universal) │────▶│  Algorithm  │────▶│  Instances  │
└─────────────┘     └─────────────┘     └─────────────┘
       │                    │                    │
       ▼                    ▼                    ▼
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│   Client    │     │   Adapter   │     │  Consensus  │
│  Adapters   │     │   Pattern   │     │  Algorithm  │
└─────────────┘     └─────────────┘     └─────────────┘
TypeScriptRedisnode-redisioredisVitestESM/CJS

Design Decisions

Adapter Pattern

Abstract Redis client differences while preserving native performance

Zero Dependencies

No external dependencies for maximum reliability and minimal bundle size

Algorithm Correctness

Redis-spec compliant implementation over API convenience